首页  >  文章  >  后端开发  >  您可以在 C 中使用非常量变量来声明数组大小吗?

您可以在 C 中使用非常量变量来声明数组大小吗?

Linda Hamilton
Linda Hamilton原创
2024-11-02 11:56:31892浏览

Can You Use Non-Constant Variables to Declare Array Sizes in C  ?

带有非常量变量的数组大小声明

与 C 中数组大小必须是常量整数的广泛接受的概念相反,最近的观察据透露,一些编译器在这方面允许更大的灵活性。虽然 C 标准规定数组边界必须是常量表达式,但 GCC 引入了一个扩展,允许在数组大小声明中使用非常量变量。

考虑以下示例:

<code class="c++">int ArraySize = 5;
int MyArray[ArraySize];</code>

在标准 C 中,此代码将生成编译器错误,因为 ArraySize 不是常量。然而,GCC 很高兴地编译它,没有任何问题。

要理解这种行为,必须承认 GCC 的扩展与 C 标准的偏差。 Bjarne Stroustrup 的《C 编程语言》摘录明确指出数组边界必须是常量表达式。

尽管如此,GCC 的扩展提供了一种在运行时动态分配数组的便捷方法。有人可能会说,这种灵活性是以可移植性为代价的,因为依赖 GCC 扩展的代码可能无法在其他兼容的 C 编译器上编译。

如果可移植性是一个问题,GCC 提供了强制执行标准合规性的选项。在编译期间传递 -pedantic 标志会导致对非常量数组大小声明发出警告,并且 -std=c 98 将其视为错误。这些选项优先考虑严格遵守 C 标准而不是运行时的便利性。

以上是您可以在 C 中使用非常量变量来声明数组大小吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn