首頁 >後端開發 >C++ >`sizeof(void)` 是否告訴我們 C 或 C 中 void 類型的大小?

`sizeof(void)` 是否告訴我們 C 或 C 中 void 類型的大小?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-03 20:05:27974瀏覽

Does `sizeof(void)` tell us the size of the void type in C or C  ?

難以捉摸的void 的大小

問題:

我們能否確定C 或C 中void 類型的大小?考慮下面的程式碼:

void *p = malloc(sizeof(void));
擴充:如果 sizeof(void) 在 GCC 中回傳 1,如果 p 最初持有,指針 p 在 p 之後會遞增到 0x2346 0x2345?

答案:

void 類型從根本上來說缺乏大小,使得表達式 sizeof(void) 毫無意義並導致編譯錯誤。在 C 中,這是嚴格禁止的。

意外發現:

令人驚訝的是,在 GNU C 編譯時,sizeof(void) 的結果為 1。但是,這種行為是有限的到GNU C 並且在C 或其他中沒有觀察到

含義:

儘管GNU C 中有意外的返回值,但值得注意的是void 仍然是沒有大小的類型。指向 void 的指針(例如範例中的 p)是真正的指針,並且可以像任何其他指針一樣遞增。擴展問題中的增量操作將按預期運行,p 指向下一個可用記憶體位址。

以上是`sizeof(void)` 是否告訴我們 C 或 C 中 void 類型的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn