2015-03-03 117 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