Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关于使用scanf函数的数组的问题_C_Scanf - Fatal编程技术网

关于使用scanf函数的数组的问题

关于使用scanf函数的数组的问题,c,scanf,C,Scanf,我对scanf函数有问题。如果我用a+i替换a[i],它会起作用,但我不明白为什么 printf("Inserire i %d numeri:\n", N); for(i = 0; i < N; i++){ scanf("%d", a[i]); scanf("%*c"); } for(i = 0; i < N; i++) sum += a[i]; printf("%d\n", sum); printf(“插入i%d编号:\n”,n); 对于(i=0;i

我对scanf函数有问题。如果我用a+i替换a[i],它会起作用,但我不明白为什么

printf("Inserire i %d numeri:\n", N);
for(i = 0; i < N; i++){
    scanf("%d", a[i]);
    scanf("%*c");
}
for(i = 0; i < N; i++)
    sum += a[i];

printf("%d\n", sum);
printf(“插入i%d编号:\n”,n);
对于(i=0;i
它们是不同的东西(编译器可能会警告您这一点):
a+i
是指向数组偏移量
i
处元素的指针,这是
scanf
需要知道将读取的值放在何处,而
a[i]
是该地址处的值,这对
scanf
没有任何用处,它们是不同的东西(编译器可能会警告您:
a+i
是指向数组偏移量
i
处元素的指针,这是
scanf
需要知道将读取的值放在何处,而
a[i]
是该地址处的值,这对scanf是没有用的

int a[42];
scanf(“%d”,…)
需要
a[i]
的地址,而
a+i
的地址与
&a[i]
的地址相同

a[i]
依次相当于
*(a+i)
*&a[i]

由于
scanf()
需要知道将扫描数据写入何处,因此需要该地址


看到这个

for(i = 0; i < N; i++)
  sum += a[i];
(i=0;i 总和+=a[i]; 在进入上述循环之前,您确保将
sum
设置为
0
,是吗?

int a[42];
scanf(“%d”,…)
需要
a[i]
的地址,而
a+i
的地址与
&a[i]
的地址相同

a[i]
依次相当于
*(a+i)
*&a[i]

由于
scanf()
需要知道将扫描数据写入何处,因此需要该地址


看到这个

for(i = 0; i < N; i++)
  sum += a[i];
(i=0;i 总和+=a[i]; 在进入上述循环之前,您确保将
sum
设置为
0
,是吗?

Scanf需要一个地址(指向[i]的指针)来存储该值。a[i]表示地址a+i处的值

这就是为什么必须使用&a[i]或a+i而不是[i]。

Scanf需要一个地址(指向a[i]的指针)来存储其中的值。a[i]表示地址a+i处的值


这就是为什么必须使用&a[i]或a+i而不是a[i]。

声明在哪里a+i是指针。另一个是not,其中声明sa+I是指针。另一个不是