我正在读取数组上的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;
}
}
它工作正常,我可以在运行时设置数组的大小。我没有得到任何编译错误,或运行时崩溃。
有人可以解释发生了什么吗?
由于
答案 0 :(得分:4)
像g ++这样的一些编译器允许使用C variable length arrays并且很乐意编译代码而不会出现任何警告或错误。这不是标准的,是编译器扩展。
如果你需要一个&#34;阵列&#34;并且你不知道在运行之前它的大小是什么然后我建议你使用std::vector
你可以使用它作为数组的直接替代,但它允许运行时大小调整,它提供了许多其他有用的功能