我正在阅读数组上的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)
而且效果很好,我可以在运行时设置数组的大小。我没有收到任何编译错误,或者运行时崩溃。
有人可以解释发生了什么吗?
谢谢
一些类似g ++的编译器允许使用C 可变长度数组,并会愉快地编译代码而不会发出任何警告或错误。这不是标准的,是编译器扩展。
如果您需要一个“数组”,并且在运行时之前不知道其大小,那么我建议您使用A。std::vector 您可以将其用作数组的直接替代品,但是它允许运行时调整大小,并且它还提供许多其他功能有用的功能。
| 归档时间: |
|
| 查看次数: |
243 次 |
| 最近记录: |