2015-03-03 116 views
-16
  1. 使用32位编译器的32位机器中C指针的大小是多少?C中指针的大小

  2. 使用32位编译器的64位机器中C指针的大小是多少?

+1

为什么downvotes? – 2015-03-03 08:12:30

+1

'的printf( “%d \ n” 个,的sizeof(无效*));' – TonyK 2015-03-03 08:13:49

+1

这可能有助于:[?什么在C++ 64位计算机的指针大小(http://stackoverflow.com/questions/6841405/什么最指针大小在64位计算机,在-C) – emlai 2015-03-03 08:14:46

回答

5

如果64位操作系统能够运行32位应用程序(大多数),则该机器不相关;它取决于您创建的可执行文件的类型(-m32等)。

您可以通过编译和运行下面的代码回答自己:

#include <stdio.h> 
int main(int argc, const char **argv) 
{ 
    printf("Pointer size is %u bytes\n", (unsigned)sizeof(void *)); 
    return 0; 
} 

答案将是4(32位)。

+0

这个大小取决于什么?编译器还是机器架构? – NAVEEN 2015-03-03 08:16:40

+1

@NAVEEN这取决于您是否告诉编译器创建32位或64位可执行文件。例如,GNU编译器使用'-m32'或'-m64'来定义类型。 OSX下的'clang'使用'-arch x86'或'-arch x86_64',Microsoft编译器使用'/ MACHINE:X86'和'/ MACHINE:X64'。 – trojanfoe 2015-03-03 08:19:23

+1

@trojanfoe这不回答这个问题。它只是建议如何在某些特定的实现中检查指针的大小。 – 2015-03-03 08:19:31