我只是想知道我怎么知道我的笔记本电脑是 64 位还是 32 位机器。 (它是 64)。
所以,我考虑打印以下内容:
int main()
{
printf("%d",sizeof(int));
}
结果是 4,这看起来很奇怪(因为它是 64 位机器)
但是,当我打印这个时:
int main()
{
printf("%d",sizeof(int*));
}
结果是 8,这更有意义。
问题是:
由于我使用的是 64 位机器,因此 int 等原始类型不应该使用 8 个字节
(64位)并且按那个sizeof int应该是8?为什么不是这样?
为什么 int* 的大小是 8?
这里有点迷茫
所以提前谢谢。
原文由 Itzik984 发布,翻译遵循 CC BY-SA 4.0 许可协议
不,
sizeof(int)
是实现定义的,通常是 4 个字节。另一方面,为了寻址超过 4GB 的内存(32 位系统可以做到),您的指针需要为 8 字节宽。
int*
只是将地址保存到“内存中的某处”,并且您不能仅用 32 位寻址超过 4GB 的内存。