我有2个数组。我通过一个函数读了它们。然后我通过另一个函数求和它们并通过另一个函数打印sum数组。我必须一直使用指针。问题是,它将数组的最后两个元素的总和打印为整个sum数组。我该如何解决这个问题?
#include<stdio.h>
void read(int *pdato);
void print(int *pdato);
void sum(int *pdato1,int *pdato2, int *pdato);
int main(){
int A[5],B[5],C[5],i;
printf("Data for first array:\n");
read(A);
printf("Data for the second array\n");
read(B);
sum(A,B,C);
printf("Result:\n");
print(C);
return 0;
}
void read(int *pdato){
int i;
for(i=0;i<5;i++){
printf("[%d]:",i);
scanf("%d",pdato);
}
}
void sum(int *A,int *B, int *C){
int i;
for(i=0;i<5;i++){
*(C+i)=*(A+i)+*(B+i);
}
}
void print(int *pdato){
int i;
for(i=0;i<5;i++){
printf("[%d]:%d\n",i,*pdato);
}
}
答案 0 :(得分:2)
应该是
printf("[%d]:%d\n",i,pdato[i]);
和
scanf("%d",&pdato[i]);
答案 1 :(得分:0)
建立@Massey101,这是不使用数组表示法的答案:
应该是
printf("[%d]:%d\n",i,*(pdato + i));
和
scanf("%d",pdato + i);
答案 2 :(得分:0)
另一个解决方案如下:
每次读取数据后递增指针指向正确的存储位置以存储输入。
for(i=0;i<5;i++) {
scanf("%d",pdato);
pdato++;
}
打印结果时递增指针,以便从正确的内存位置获取结果,如下所示
for(i=0;i<5;i++) {
printf("[%d]:%d\n",i,*pdato);
pdato++;
}