c++ - 在 C++ 中创建具有非常量长度的数组时会发生什么?

标签 c++ arrays

据我所知,这段代码不是标准的有效 C++ 代码:

int a = 5;
int b[a];

但似乎许多编译器都可以编译该代码(主要是带有警告)并且它的行为符合预期。我错了吗,是编译器对我好吗?

最佳答案

它被称为可变长度数组 (VLA),这是标准 C++ 和任何版本的 C++ 所不允许的,尽管一些 GCC 支持它作为扩展。

如果你使用的是 GCC,那么

  • -pedantic选项编译它,你会看到警告。
  • -pedantic -Werror选项编译它,你会看到警告变成了错误。

VLA 只被 C99 允许,但其他版本的 C 不允许。

关于c++ - 在 C++ 中创建具有非常量长度的数组时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8239001/

相关文章:

c++ - 我什么时候应该在 C++ 中重用变量名

c++ - 将更靠近的白色像素组合在一起并在 OpenCV 中围绕它们绘制一个矩形

arrays - 使用SIMD操作进行可变长度数组扩展

arrays - 如何在 Perl 中将一个数组分成两个不同的数组

c - 从函数返回数组会导致内存泄漏吗?

c++ - 在 C++ 中 : How to overwrite an element to an array by moving entries below it up by one

c++ - 使用模板的类型转换有奇怪的行为

c++ - 如何正确地将输出组织成列?

我可以安全地将 &char[] 转换为 char** 吗?

java - 如何避免 FOR JAVA 的一轮