2010-04-29 94 views
2
printf("pointer: %d\n", sizeof(*void)); 

由於*,此行會導致語法錯誤。我該怎麼做才能使它起作用?查找指針的大小

+6

請注意,您應該使用'「%zu」'來打印'size_t'類型(即'sizeof'返回的值)而不是'「%d」'。這是一個迂腐的差異,但你不想看到一個-3元素的數組,你會嗎? – 2010-04-29 10:37:10

回答

9

您正在試圖找出地址爲void的大小。如果您正在尋找無效指針的大小,請嘗試:sizeof(void *)。

printf("pointer: %zu\n", sizeof(void*)); 

應該做你想做的。使用%zu而不是%d作爲指針是無符號值而不是小數。

編輯:我第一次想到的其他東西,是%zu編譯器的依賴嗎?我們是否需要在32位或64位架構上做不同的事情?

6
printf("pointer: %d\n", sizeof(void*));