如何在C ++中定义数组

时间:2013-10-18 00:07:14

标签: c++ arrays

来自C ++文档http://www.cplusplus.com/doc/tutorial/arrays/
要定义像这样int a[b];的数组,变量b必须是常量。

以下是我在g ++下运行的内容(Ubuntu / Linaro 4.6.3-1ubuntu5)4.6.3

int main(){

int a = 10;
int b[a];


for(int i = 0; i < 10; i++){
    cout << b[i] << endl;
}
return 0;
}

变量a不是常数,我没有错误。请问从什么版本的g ++接受这种数组定义开始?

4 个答案:

答案 0 :(得分:4)

编译器使用的是非标准扩展。您的代码无效,标准C ++。可变长度数组不是C ++的一个特性。

请注意,大小必须是编译时常量,而不仅仅是常量(即const)。

答案 1 :(得分:4)

检查该链接: http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Variable-Length.html#Variable-Length

允许可变长度数组作为GCC中的扩展

答案 2 :(得分:1)

您无法在C ++中创建动态数组,因为您的编译器需要在编译之前知道您的程序有多大。 但是你可以使用'new'创建一个数组:

int *b = new int[a];

这将创建一个保留新存储的新阵列。 您可以正常方式访问此数组。

for(int i=0; i<a; i++)
{
   b[i];
}

答案 3 :(得分:0)

对于动态大小的数组,您可以在C ++中使用std :: vector(不完全是一个数组,但足够接近,如果您需要原始数组,则可以使用后备存储)。如果您坚持创建动态数据块,只需使用'new type []'即可。

int a = 100;
int[] b = new int[a];