【发布时间】:2019-04-15 20:20:57
【问题描述】:
让我们考虑以下代码:
#include <stdio.h>
int main(){
int size,i;
scanf("%d",&size);
int x[size];
for(i=0;i<size;i++){
x[i] = i;
}
for(i=0;i<size;i++){
printf("%d\n", x[i]);
}
return 0;
}
我认为有些版本我们不能使用变量来声明数组以定义其大小,例如:
int x[size];
但我不确定是哪个版本。 这在所谓的 ANSI C 中是允许的吗?
【问题讨论】:
-
事实上,在 C89 中不允许在范围开头以外的地方声明新变量的能力。
-
这是一个所谓的“可变长度数组”,在 C99 标准修订版中成为语言的一部分,但在 C11 中成为可选
-
我不认为这算作重复。这是要求澄清哪些 C 版本支持此功能,而另一个问题是询问可变长度数组如何工作。
-
那里的答案解释了 VLA 出现的标准。这是 2019 年。我们有足够的 C 副本。
标签: c