我自学编程已经有几年了,我曾确信如果需要声明变量数量的数组,需要使用malloc
或new
。
但今天我发现,在g++版本4.4.4下,这段代码可以编译通过,没有任何警告或错误:
#include <iostream>
using namespace std;
int main()
{
int size_array;
cin >> size_array;
int iTable[size_array];
for(int i=0;i < size_array;i++)
iTable[i]=i*i;
for(int i=0;i < size_array;i++)
cout << iTable[i] << endl;
return 0;
}
如果你使用gcc(在将cout
和cin
更改为printf
和scanf
后),它可以完全编译通过。
在Visual Studio下,由于size_array
不是常量,该代码无法编译通过。
这个问题是什么时候改变的?这种方法是否安全?