Array of non-constant size: Why does this even wor

2019-02-22 16:29发布

问题:

This question already has an answer here:

  • C++: Why does int array[size] work? 3 answers
#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;
}

Is this some kind of dynamic allocation?
Why doesn't it even gives an error for 'n' to be a "const"?

Also, writing cout << array[n+5]; doesn't result in an compile time or runtime error.

I'm using Dev-C++.

回答1:

Apparently one can declare variable length arrays in C99, and it seems GCC accepts then for C++ also.

Variable-length automatic arrays are allowed in ISO C99, and as an extension GCC accepts them in C90 mode and in C++. These arrays are declared like any other automatic arrays, but with a length that is not a constant expression.

You learn something every day .. I hadn't seen that before.