首頁  >  文章  >  後端開發  >  你能在 C 中宣告一個可變大小的陣列嗎?

你能在 C 中宣告一個可變大小的陣列嗎?

DDD
DDD原創
2024-11-01 22:11:29388瀏覽

Can You Declare an Array with a Variable Size in C  ?

C 中的變數陣列大小宣告

在 C 中,陣列的大小通常預期為常數整數值。然而,問題是是否可以聲明一個以非常量變數作為其大小的陣列。

如 Bjarne Stroustrup 在《C 程式語言》中所強調的,「陣列綁定,必須是常數表達式」。因此,下面的程式碼被認為是不正確的:

<code class="cpp">int ArraySize = 5;
int MyArray[ArraySize]; // incorrect</code>

但是,令人驚訝的是,在某些系統(例如GCC v4.4.0)上,程式碼編譯成功:

<code class="cpp">void f(int i) {
    int v2[i];
}

int main() {
    int i = 3;
    int v1[i];
    f(5);
}</code>

這種意外行為這是由於GCC 對標準的擴展。預設情況下,GCC 允許使用非常量變數作為陣列大小。但是,這可能不是所有編譯器或平台都支援的功能。

如果需要可移植性,強烈建議使用 GCC 的 -pedantic 選項來啟用此擴充的警告或使用 -std=c 98 提出錯誤。透過遵守標準,程式碼將更加可靠和跨平台相容。

以上是你能在 C 中宣告一個可變大小的陣列嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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