声明具有非常量大小变量的数组

时间:2010-09-28 16:03:38

标签: c arrays

我在C学习我的考试,我正在阅读我从某个网站下载的C摘要。 写道,不允许写arr[i] i是变量。唯一的方法是使用malloc 但是,我编写了以下代码,它在没有警告的情况下进行编译,并且在valgrind上没有错误:

int index = 5;
int a4[index];

a4[0] = 1;
a4[1] = 2;

int index2;
scanf("%d",&index2);
int a5[index2];
a5[0] = 1;
a5[1] = 2;

那么数组声明背后的真相是什么? 谢谢!

1 个答案:

答案 0 :(得分:14)

C99允许在堆栈上创建variable length arrays。您的编译器可能支持此功能。此功能在C89中不可用。

从某个角度来看,摘要告诉你的是真实的。 : - )