为什么这在C(数组)中无效? #包括 int main(){ int n; printf(“输入n\n的值”); scanf(“%d”和“&n”); int A[n]; }

为什么这在C(数组)中无效? #包括 int main(){ int n; printf(“输入n\n的值”); scanf(“%d”和“&n”); int A[n]; },c,arrays,C,Arrays,为什么我不能从用户显式分配数组的大小?C99和C11支持(可选)。使用GCC 7.2.1,您的示例可以正常工作。我是这样编译的: #include<stdio.h> int main(){ int n; printf("Enter a value for n\n"); scanf("%d",&n); int A[n]; } 您的编译器似乎不支持此功能。可变长度数组位于C99中。可能您使用的是较旧的编译器?如果OP使用的是C11,这也可能是一个

为什么我不能从用户显式分配数组的大小?

C99和C11支持(可选)。使用GCC 7.2.1,您的示例可以正常工作。我是这样编译的:

#include<stdio.h>
int main(){
    int n;
    printf("Enter a value for n\n");
    scanf("%d",&n);
    int A[n];
}

您的编译器似乎不支持此功能。

可变长度数组位于C99中。可能您使用的是较旧的编译器?如果OP使用的是C11,这也可能是一个问题,具体取决于编译器,因为VLA支持是可选的。C/C++不是一种语言。这是一个C问题,所以C++相关的答案是偏离主题的。此外,C99支持可变长度数组,C11支持VLA可选。你说得对。C++没有,C11…很快就会找到答案。。。
gcc abc.c -o abc

gcc --std=c99 abc.c -o abc