我很惊讶这段代码编译完美而且没有任何错误!
int arraysize = 1000;
int array[arraysize];
for(int i=0; i<arraysize; i++)
{
array[i] = i+1;
}
for(int i=0; i<arraysize; i++)
{
cout << array[i];
}
编辑:使用的编译器:i386-linux-gnueabi-g ++(Linaro GCC 4.5-2012.01)4.5.4 20120105(预发布)
答案 0 :(得分:1)
在C ++中,数组的大小必须是常量。如果要声明大小变量const
,则可以使用它。
C允许可变长度数组(有时称为VLA),而某些C ++编译器提供这些作为扩展;这就是你的代码有效的原因。
通常,如果您需要动态大小的数组,std::vector
是一种更安全,更便携的替代方案。
答案 1 :(得分:1)
这可能是您的编译器(GCC?)的一个功能,它允许C99可变长度数组。在C99中,定义诸如
之类的数组是有效的int n;
scanf("%d", &n);
int array[n];
根据标准,C ++不支持可变长度数组,可能是因为它有更好的选择,即std::vector<>
。尝试使用g++ -pedantic-errors file.cpp
进行编译,您将收到
error: ISO C++ forbids variable-size array ‘array’
应该注意的是,可变长度数组不支持C ++类,这是在C ++中不打扰它们的另一个原因,而是使用std::vector<>
。