我使用C++已经有几年了,今天我看到一些代码,但是这怎么可能是合法的?
int main(int argc, char **argv)
{
size_t size;
cin >> size;
int array[size];
for(size_t i = 0; i < size; i++)
{
array[i] = i;
cout << i << endl;
}
return 0;
}
使用GCC编译。
如何在运行时确定大小而不使用new
或malloc
?
只是为了双重检查,我已经谷歌了一些,所有类似于我的代码的代码都声称会给出存储大小错误。
甚至Deitel的《C++ How To Program》p.261在常见编程错误4.5下陈述:
只有常量可用于声明自动和静态数组的大小。
启发我。