問題:理解「void」的未定義大小
在 C 程式設計中,關鍵字「void」表示類型的缺失。這就提出了一個問題:「void」的大小是多少?
答案:
型「void」在 C 中沒有定義大小。它不是一個物件或指標的有效類型,因此嘗試這樣使用它會導致編譯錯誤。具體來說,語句:
void n;
是無效的,因為它試圖聲明一個void類型的變量,這是不允許的。
擴充:使用「void」指標進行分配和指標算術
雖然「void」沒有大小,但它可以用作指標的類型。然而,這樣的指標並不指向任何特定類型或大小的資料。
語句:
void *p = malloc(sizeof(void));
結果出現編譯時錯誤,因為嘗試為「void」型別分配記憶體是無意義的。函數 malloc 需要一個有效的資料型別來分配記憶體。
在 GCC 中,表達式 sizeof(void) 的計算結果令人驚訝地為 1。雖然這看起來像是為“void”分配了一個大小,但它只是不應依賴的實作細節。
此外,「void」指標上的指標算術 p 未定義,不應使用。這是因為 p 指向的資料類型未知,因此無法確定遞增指標意味著什麼。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3