为什么我的指针大小在 64 位计算机上是 4 个字节?

Nas*_*Nas 4 c 64-bit byte

编译器说我的指针是 4 个字节,但我的电脑是 64 位操作系统。它不应该说它是 8 个字节而不是 4 个字节吗?是什么导致了这个问题?IDE 是这样做的吗?也许,编译器也许?

int *p;
printf("%d", (int)sizeof(p));


compiler says: 4
Run Code Online (Sandbox Code Playgroud)

P__*_*J__ 5

您的编译器和编译器选项定义了实际目标。操作系统无关紧要,因为您可以在 32 位机器上编译 64 位代码(您将无法执行它),而在 64 位机器上可以编译 32 位代码。

如果指针的 sizeof 为 4 字节,则表示您编译的是 32 位代码。在许多 64 位操作系统上,您可以执行 32 位代码。