几年来我一直在自学编程,我确信如果您需要对变量号进行数组声明,则需要使用 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
不是常量。
这是什么时候改的?这是一种安全的方法吗?
最佳答案
这是一个 C99 功能 - VLA - 这不是标准 c++ 的一部分。如果您的编译器支持它并且您不需要可移植性,则可以使用它。如果编译器支持它,那么使用它是绝对安全的 - 但使用非标准功能是一个坏习惯。
关于c++ - 数组的非常量声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5377411/