C 中的可變大小數組:使用 GCC 擴展進行編譯
C 通常要求數組大小為常數整數。不過,GCC 提供了一個擴展,允許使用非常量變數來聲明陣列大小。
問題:
為什麼下面的代碼用GCC 編譯成功?
<code class="cpp">void f(int i) { int v1[i]; } int main() { int i = 3; int v2[i]; f(5); }</code>
答案:
此行為是GCC 引入的C 標準的擴展。預設情況下,GCC 允許您使用非常量變數來指定陣列大小。
但是,有一些重要的警告需要注意:
使用擴展:
要使用此擴展,只需使用非常量變量聲明數組作為其大小:
<code class="cpp">int arraySize = 5; int myArray[arraySize];</code>
克服可移植性關注:
如果考慮可移植性,您可以使用std::vector 容器而不是具有可變大小的陣列:
<code class="cpp">std::vector<int> myVector(arraySize);</code>
利用此擴展,您可以獲得更大的收益在動態情況下靈活管理陣列大小。但是,在專案中使用它時,了解其局限性並考慮其可移植性影響非常重要。
以上是為什麼 GCC 允許在 C 中使用可變大小的陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!