在 运行 时间初始化数组元素

Initialize array elements at run time

我是 C 的新手,我正在尝试根据用户输入在 运行 时初始化数组元素(所以如果用户输入 4,则数组 [0]=4)。

我有以下代码:

#include<stdio.h>
#define MAX 10
#define maxValue 100

int array[MAX];
int n;
int main(void){
   scanf("%d", n); //asks for array value
   if (n <= maxValue)
   {
      array[0] = n;
   }
   return 0;
}

代码可以编译,但会触发访问冲突。 怎么了?

您应该将 &n 传递给 scanf。

scanf("%d", &n);

正如 Jonathan 所指出的,这很容易被编译器警告捕获。对于 gcc,您可以使用 -Wall,它将显示:

warning: format specifies type 'int *' but the argument has type
  'int' [-Wformat]
scanf("%d", n); //asks for array value
       ~~   ^