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

时间:2014-03-09 06:15:10

标签: c++ arrays memory dynamic compiler-errors

#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;
}

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

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

我正在使用Dev-C ++。

1 个答案:

答案 0 :(得分:3)

显然可以在C99中声明可变长度数组,看起来似乎是GCC accepts then for C++ also

  

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

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