0

一个指针将被分配1个字节,所以它最多可以寻址2^8个地址,即只有128个地址,但是32位机器最多可以寻址2^32个地址,那么指针如何保存超过8个地址?位,我很困惑,任何人都可以帮忙。

4

1 回答 1

4

32 位二进制指针的大小通常为 4 个字节。如果您将代码编译为 64 位二进制文​​件,则指针的大小应为 8 个字节。它足够大以寻址可用内存。

您可以像这样检查任何类型的指针变量的大小

printf("%zu\n", sizeof(int *));

您似乎对char和的大小感到困惑char *char存储一个字符变量,它的大小是一个字节。你可以检查它:

printf("%zu\n", sizeof(char));

但是,char *是一个指向 a 的指针char,它的大小在 32 位环境中通常为 4 个字节

printf("%zu\n", sizeof(char *));
于 2013-10-15T08:18:58.640 回答