<分区>
我相信当你声明它时,数组的大小应该是一个常量 int。 但是,我编译了以下代码,但没有出现任何错误。 你能解释一下吗?
#include <stdio.h>
void function(int);
int main(void){
int m = 0;
scanf("%d", &m);
function(m);
return 0;
}
void function(int i){
int array[i];
}
输入:5 输出:没有。但没有错误。
标签 c
<分区>
我相信当你声明它时,数组的大小应该是一个常量 int。 但是,我编译了以下代码,但没有出现任何错误。 你能解释一下吗?
#include <stdio.h>
void function(int);
int main(void){
int m = 0;
scanf("%d", &m);
function(m);
return 0;
}
void function(int i){
int array[i];
}
输入:5 输出:没有。但没有错误。
最佳答案
从 C99 添加的可变长度数组(或 VLA)是一种自动存储持续时间的数组数据结构,其长度在运行时(而不是在编译时)确定。
VLA 的工作原理是将数组放入堆栈中。这使得分配和访问非常快,但堆栈通常很小(几 KB),当 VLA 溢出堆栈时,它与无限递归没有区别。
关于c - 声明一个带有变量的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19131712/