指针大小和它可以容纳的地址范围

时间:2013-10-15 08:14:50

标签: c

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

1 个答案:

答案 0 :(得分:4)

32位二进制文​​件的指针大小通常为4个字节。如果将代码编译为64位二进制文​​件,则指针的大小应为8个字节。解决可用内存的问题非常大。

您可以检查任何类型的指针变量的大小,如

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

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

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

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

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