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

Tel*_*ies 0 c++ arrays

我正在阅读数组上的C ++ Primer plus,它显示以下内容

typeName arrayName[arraySize]; 
//Arraysize cannot be a variable whose value is set while the program is running"
Run Code Online (Sandbox Code Playgroud)

但是,我写了一个程序

#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;
    }
}
Run Code Online (Sandbox Code Playgroud)

而且效果很好,我可以在运行时设置数组的大小。我没有收到任何编译错误,或者运行时崩溃。

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

谢谢

Nat*_*ica 5

一些类似g ++的编译器允许使用C 可变长度数组,并会愉快地编译代码而不会发出任何警告或错误。这不是标准的,是编译器扩展。

如果您需要一个“数组”,并且在运行时之前不知道其大小,那么我建议您使用A。std::vector 您可以将其用作数组的直接替代品,但是它允许运行时调整大小,并且它还提供许多其他功能有用的功能。

  • @Florian C++ 不包括所有 C99。VLA 在任何版本的 C++ 中都不是标准的 (2认同)