問題:
我們能否確定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中文網其他相關文章!