关于使用scanf函数的数组的问题
我对scanf函数有问题。如果我用a+i替换a[i],它会起作用,但我不明白为什么关于使用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
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是指针。另一个不是