首頁  >  文章  >  後端開發  >  C 中是否存在可變長度數組 (VLA)?

C 中是否存在可變長度數組 (VLA)?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-16 13:11:03727瀏覽

Do Variable Length Arrays (VLAs) Exist in C  ?

C 中的變長數組

儘管普遍假設C 不支援變長數組(VLA),但仍有一些方法可以實現類似的功能。但是,請務必注意,使用這些方法並不能保證所有編譯器之間的相容性。

程式碼說明

您提供的範例程式碼可以編譯並運行,因為:

  • GCC 相容性: GCC 版本4.7 及更高版本支援VLA 作為擴充。這意味著當您的程式碼使用 GCC 編譯時,它會解釋 int a[n];作為 VLA。
  • 自動儲存分配: VLA 儲存在堆疊上,這是一種在函數開始時自動分配的記憶體。因此,在您的程式碼中,a 是根據使用者輸入的 n 值在堆疊上分配的。

標準支援

需要注意的是C 標準不要求編譯器支援 VLA。因此,使用 VLA 的程式碼可能無法跨不同編譯器或平台移植。

針對 C 14 和 C 17 的失敗提案

最初建議將 VLA包含在 C 14 標準中。然而,該提案並未通過投票程序,VLA 也沒有添加到語言中。該提案也未能被接受納入 C 17。

結論

雖然 VLA 不是 C 標準的正式一部分,但它們可以用作擴展在某些編譯器中,例如 GCC。然而,了解潛在的可移植性問題並謹慎使用 VLA 至關重要,尤其是在跨平台程式碼中。

以上是C 中是否存在可變長度數組 (VLA)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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