首页  >  文章  >  后端开发  >  你能在 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