c++ - C++中是否有可变长度数组?

标签 c++ variable-length-array gcc-extensions clang-extensions

我一直认为c++中不允许使用可变长度数组(引用:Why aren't variable-length arrays part of the C++ standard?)。但是为什么这段代码可以编译并运行?

#include <iostream>
using namespace std;

int main () {

    int n;
    cin >> n;

    int a[n];

    for (int i=0; i<n; i++) {
        a[i] = i;
    }

    for (int i=0; i<n; i++) {
        cout << a[i] << endl;
    }
}

最佳答案

当前的 C++ 标准不要求编译器支持 VLA。但是,允许编译器供应商将 VLA 作为扩展来支持。例如,GCC >= 4.7。

最初提议 VLA 出现在 C++14 中,但该提议没有成功。它们最终也没有出现在 C++17 中。

关于c++ - C++中是否有可变长度数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22013444/

相关文章:

c++ - Sprite 文件格式

c++ - 编写一个宏来将结构的内容字符串化

c++ - 使用非常量函数参数初始化数组

带有条件编译的c++ header 包含顺序

c++ - 在 C/C++ 中通过套接字传输整数数组

c - 如何根据输入数量定义数组大小?

c++ - 为什么C++ "fill"可以初始化可变大小的数组?

c - 如何在 C 中实现 Go 的 defer() 以便允许声明变量?

c - C 中的这个 "[0 ... 255] ="语法是什么?

c - 用于变量属性的 GCC 扩展 __attribute__ ((未使用))