在让我们提到C时,提到“在分配数组时,我们必须在编写程序时提交数组的大小”。但是在下面的代码中我给出了执行时的大小,它仍在工作,这是正确的吗?
代码:
#include <stdio.h>
void main(){
{
int n,i;
printf("give the size of the array \n");
scanf("%d",&n);
int a[n];
printf ("give array elements\n");
for (i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
}
答案 0 :(得分:2)
这是variable-length array,在C语言中完全有效(自C99标准以来)。
你应该更新你的书。 Here's a list of good ones
答案 1 :(得分:0)
首先,我认为你的意思是声明而不是作业。
也就是说,这被称为variable length array或VLA。这是C99以后的补充。
引用C11
,章节§6.7.6.2/ P4
如果大小是整数常量表达式 并且元素类型具有已知的常量大小,数组类型不是可变长度 数组类型;否则,数组类型是可变长度数组类型。