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中文网其他相关文章!