这个问题在这里已有答案:
在让我们提到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]);
}
}
这是一个variable-length array,在C语言中完全有效(自C99标准以来)。
你应该更新你的书。 Here's a list of good ones。
首先,我认为你的意思是宣言而不是作业。
也就是说,这被称为variable length array或VLA。这是C99以后的补充。
引用C11
,章节§6.7.6.2/ P4
如果size是一个整型常量表达式,并且元素类型具有已知的常量大小,则数组类型不是可变长度数组类型;否则,数组类型是可变长度数组类型。