具有函数的数组和指针的总和

时间:2016-02-10 00:24:37

标签: c arrays pointers

我有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);
    }
}

3 个答案:

答案 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++;
}