C 在赋值时,在编写程序时是否必须提到数组大小

C 在赋值时,在编写程序时是否必须提到数组大小,c,C,在let us 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 elemen

在let us 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]);
    }
}       
#包括
void main(){
{
int n,i;
printf(“给出数组的大小\n”);
scanf(“%d”和“&n”);
int a[n];
printf(“给出数组元素\n”);

对于(i=0;i首先,我认为你指的是声明而不是赋值

这就是说,这被称为或VLA。这是一个C99以后的添加

引用
C11
,第§6.7.6.2/P4章

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


首先,我认为你的意思是声明而不是指派

这就是说,这被称为或VLA。这是一个C99以后的添加

引用
C11
,第§6.7.6.2/P4章

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

这是a,在C中完全有效(因为C99标准)

您可能应该更新您的书籍。

这是a,在C中完全有效(因为C99标准)

你可能应该更新你的书。

这里说:你正在使用的书“是一本非常过时的书,教Turbo C,有很多过时的、误导性的和完全不正确的材料”。这里说:你正在使用的书“是一本非常过时的书,教Turbo C,有很多过时的、误导性的和完全不正确的材料”。