如果跟我有相同的疑惑,不要怀疑,在下认为是这个道理。在一个特定的机器上,指针的大小是固定的,并且与机器的架构有关。在32位计算机上,指针的大小通常是32位,即4个字节,因为指针需要足够的大小来存储内存地址。在64位计算机上,指针的大小通常是64位,即8个字节,因为64位系统有更大的地址空间,所以需要更大的指针来寻址。
指针的大小与它指向的数据类型无关,而是与操作系统的地址宽度有关。无论指针指向的是整数、浮点数、字符还是其他任何类型的数据,指针本身的大小都是一样的。
在C语言中,可以使用 sizeof
运算符来获取指针的大小。例如:
#include <stdio.h>
int main() {
int *ptr;
printf("Size of pointer: %zu bytes\n", sizeof(ptr));
return 0;
}
在32位计算机上,上述代码将输出 Size of pointer: 4 bytes
,而在64位计算机上,它将输出 Size of pointer: 8 bytes
。