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中文網其他相關文章!