一个指针将被分配1个字节,所以它最多可以寻址2^8个地址,即只有128个地址,但是32位机器最多可以寻址2^32个地址,那么指针如何保存超过8个地址?位,我很困惑,任何人都可以帮忙。
问问题
207 次
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 回答