是否必须在分配时我们应该在编写程序时提到数组大小

时间:2017-12-18 11:43:40

标签: c

在让我们提到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]);
    }
}       

2 个答案:

答案 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

  

如果大小是整数常量表达式   并且元素类型具有已知的常量大小,数组类型不是可变长度   数组类型;否则,数组类型是可变长度数组类型。