我在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;
那么数组声明背后的真相是什么? 谢谢!
答案 0 :(得分:14)
C99允许在堆栈上创建variable length arrays。您的编译器可能支持此功能。此功能在C89中不可用。
从某个角度来看,摘要告诉你的是真实的。 : - )