指针将被分配1个字节,因此它可以寻址最多2 ^ 8个地址,即只有128个地址,但是32位机器可以寻址最多2 ^ 32个地址,那么指针如何保存更多的地址超过8位,我很困惑任何人都可以帮助。
答案 0 :(得分:4)
32位二进制文件的指针大小通常为4个字节。如果将代码编译为64位二进制文件,则指针的大小应为8个字节。解决可用内存的问题非常大。
您可以检查任何类型的指针变量的大小,如
printf("%zu\n", sizeof(int *));
您似乎对char
和char *
的大小感到困惑。 char
存储一个字符变量,其大小为一个字节。你可以检查一下:
printf("%zu\n", sizeof(char));
但是,char *
是指向char
的指针,其大小在32位环境中通常为4个字节
printf("%zu\n", sizeof(char *));