C ++数组,在运行时设置arraysize

时间:2016-05-02 16:41:08

标签: c++ arrays

我正在读取数组上的C ++ Primer plus,它说明了以下内容

typeName arrayName[arraySize]; 
//Arraysize cannot be a variable whose value is set while the program is running"

但是,我写了一个程序

#include <iostream>

using namespace std;    

int main()
{
    int n;
    cin>>n;

    int array[n];

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

它工作正常,我可以在运行时设置数组的大小。我没有得到任何编译错误,或运行时崩溃。

有人可以解释发生了什么吗?

由于

1 个答案:

答案 0 :(得分:4)

像g ++这样的一些编译器允许使用C variable length arrays并且很乐意编译代码而不会出现任何警告或错误。这不是标准的,是编译器扩展。

如果你需要一个&#34;阵列&#34;并且你不知道在运行之前它的大小是什么然后我建议你使用std::vector你可以使用它作为数组的直接替代,但它允许运行时大小调整,它提供了许多其他有用的功能