无法将大小扫描到阵列

时间:2020-10-17 00:27:48

标签: c

int n;
printf("How many?");
scanf("%d", &n);

int array[n];

这些是我得到的错误..
错误C2057:期望的常量表达式
错误C2466:无法分配大小恒定为0的数组 错误C2133:“数组”:大小未知

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

某些编译器不支持可变长度数组,很遗憾,您的编译器似乎是其中之一。

您可以使用malloc()中的stdlib.h动态分配数组。

int n;
printf("How many?");
scanf("%d", &n);

int* array = malloc(sizeof(*array) * n);

答案 1 :(得分:0)

可变长度数组需要:

  1. C99

  2. C11及更高版本,未定义_STDC_NO_VLA__


数组大小必须大于0。

int n;
printf("How many?");
if (scanf("%d", &n) == 1 && n > 0) {
  // Success
  int array[n];
  ...
}
相关问题