编译器说我的指针是 4 个字节,但我的电脑是 64 位操作系统。它不应该说它是 8 个字节而不是 4 个字节吗?是什么导致了这个问题?IDE 是这样做的吗?也许,编译器也许?
int *p;
printf("%d", (int)sizeof(p));
compiler says: 4
Run Code Online (Sandbox Code Playgroud)
您的编译器和编译器选项定义了实际目标。操作系统无关紧要,因为您可以在 32 位机器上编译 64 位代码(您将无法执行它),而在 64 位机器上可以编译 32 位代码。
如果指针的 sizeof 为 4 字节,则表示您编译的是 32 位代码。在许多 64 位操作系统上,您可以执行 32 位代码。