可能重複:
Are there are any platforms where pointers to different types have different sizes?
are all data pointers of the same size in one platform?是相同大小的指針?
sizeof(Bucket *)
相同sizeof(int *)
,對不對?
順便說一句,是char arr[];
在c90中有效嗎?
可能重複:
Are there are any platforms where pointers to different types have different sizes?
are all data pointers of the same size in one platform?是相同大小的指針?
sizeof(Bucket *)
相同sizeof(int *)
,對不對?
順便說一句,是char arr[];
在c90中有效嗎?
原帖:
是的,這是正確的。指針的大小是 。
但是,那是錯誤的。我射得太快了!我很抱歉。一些不同指針大小的「情況」確實存在,取決於平臺,也取決於類型:查看http://c-faq.com/ptrs/generic.html和http://c-faq.com/null/machexamp.html的示例或至少一般的解釋。 (非常感謝@fmark和@paxdiablo,我也學到了一些東西)。但是,我從來沒有遇到指針大小不一的情況(幸運的是/不幸?)。
我相信沒有要求指針都是相同的大小。唯一的要求是所有對象指針都可以存儲在void *
中,當轉換爲void *
時,它們將相同,並且所有函數指針(如果轉換爲其他類型的函數指針並返回)將是相同的。如果你關心C++的成員函數指針,那麼你會發現指針的大小不一樣,如果你不關心C++的成員函數指針,或者你在一個更晦澀的架構上工作。
在C90中,char arr[];
是一種預先聲明全局待定長度數組的有效方法。請注意,char arr[]
是不完整的類型,因此您必須先聲明它,然後才能使用sizeof
。在C99中製作靈活的陣列成員的方式是無效的。
[有沒有任何平臺,指向不同類型的指針具有不同的大小?](http://stackoverflow.com/questions/916051/are-there-are-any-platforms-where-pointers-to-不同類型具有不同大小),[指針的大小可以根據指向的內容而變化](http://stackoverflow.com/questions/1473935/can-the-size-of-pointers-vary-取決於whats-pointed-to) – outis 2010-11-16 09:24:44
你應該把它分成兩個問題,這樣他們可以很好地回答分開 – 2010-11-16 09:31:11
重複的[是在同一個平臺上的大小相同的數據指針?](http:// stackoverflow。 com/questions/1241205/are-all-data-pointers-of-the-size-in-one-platform) – 2010-11-16 13:20:01