是否强制要求在分配时我们应该在编写程序时提及数组大小[重复]

问题描述 投票:0回答:2

在让我们提到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]);
    }
}       
c
2个回答
2
投票

这是一个variable-length array,在C语言中完全有效(自C99标准以来)。

你应该更新你的书。 Here's a list of good ones


0
投票

首先,我认为你的意思是宣言而不是作业。

也就是说,这被称为variable length array或VLA。这是C99以后的补充。

引用C11,章节§6.7.6.2/ P4

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

© www.soinside.com 2019 - 2024. All rights reserved.