非恒定大小的数组:为什么这甚至可以工作?

Luc*_*cky 5 c++ memory arrays compiler-errors dynamic

#include <iostream>
using namespace std;

int main(){
    int n;
    cout<<"Enter the size :";
    cin>>n;
    int array[n];  // I've worked some outputs and it works 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是某种动态分配吗?
为什么它甚至没有给'n'作为"const"的错误?

此外,写入cout << array[n+5];不会导致编译时或运行时错误.

我正在使用Dev-C++.

har*_*mic 3

显然,可以在 C99 中声明可变长度数组,并且似乎GCC 也接受 C++ 的可变长度数组。

ISO C99 中允许使用可变长度自动数组,并且作为扩展,GCC 在 C90 模式和 C++ 中接受它们。这些数组的声明方式与任何其他自动数组类似,但长度不是常量表达式。

你每天都会学到一些东西......我以前从未见过。