C/C 中的零長度數組:一個令人費解的錯誤
雖然定義大小為零的數組可能看起來無害,但它可能會導致C/C 中出現意想不到的後果。根據 ISO C 標準 (9899:2011 6.7.6.2),陣列的大小必須大於零。
此限制適用於普通數組和可變長度數組 (VLA)。對於 VLA,決定數組大小的表達式的值必須大於或等於 1。如果此表達式的計算結果為零或負數,則行為未定義。
儘管有這個明確的要求,但某些編譯器(例如 GCC)在定義零長度數組時不會抱怨。這可能是由於對遺留程式碼的支援尚未更新為使用帶有方括號 ([]) 的較新數組語法。但是,必須了解定義零長度數組是錯誤的。
定義這樣的陣列不會產生有效的資料結構。嘗試以任何方式使用該數組都會導致未定義的行為和潛在的崩潰。確保您的程式碼始終定義具有有效的正大小的陣列至關重要。
以上是為什麼零長度數組在 C/C 會出現問題?的詳細內容。更多資訊請關注PHP中文網其他相關文章!