如何使用指针在c中添加相邻的数组项?

时间:2017-02-11 11:58:23

标签: c arrays pointers

#include <stdio.h>

void add_adjacents() {
  int num1[5] = {1, 2, 3, 4, 5};
  int num2[5] = {10, 20, 30, 40, 50};
  int final[5];

  for (int i=0; i<sizeof(num1); i++) {
    final[i] = num1[i] + num2[i];
  }

  for (int c=0; c<sizeof(final)/sizeof(final[0]); c++) {
    printf("%d\n", final[c]);
  }
}

void main() {
  add_adjacents();
}

所以,我在没有指针的情况下完成了上述操作。但是有了指针,这是我的尝试:我仍然是指针的新手,而且我正在玩不同的练习题。

#include <stdio.h>

void add_adjacents() {
  int num1[5] = {1, 2, 3, 4, 5};
  int num2[5] = {10, 20, 30, 40, 50};
  int final[5];


  for (; *num1 != '\0'; *num1++) {
    *final = *num1 + *num2;
  }

  for (int c=0; c<sizeof(final)/sizeof(final[0]); c++) {
    printf("%d\n", final[c]);
  }
}

void main() {
  add_adjacents();
}

2 个答案:

答案 0 :(得分:1)

以下是诀窍:

void add_adjacents() {
  int num1[5] = {1, 2, 3, 4, 5};
  int num2[5] = {10, 20, 30, 40, 50};
  int final[5], c;

  int *n1= num1, *n2=num2, *f=final;

  for (; n1<&num1[5]; ) {
    *f++ = *n1++ + *n2++;
  }

  for (c=0; c<sizeof(final)/sizeof(final[0]); c++) {
    printf("%d\n", final[c]);
  }
}

答案 1 :(得分:-2)

试试这个:

#include <stdio.h>

void add_adjacents() {
  int num1[5] = {1, 2, 3, 4, 5};
  int num2[5] = {10, 20, 30, 40, 50};
  int *final = num1;




for(int i = 0;i<sizeof(num1)/sizeof(num1[0]);i++)
*(final + i) = *(num1 + i) + *(num2 + i);


for (int c=0; c<sizeof(num1)/sizeof(num1[0]); c++) {
    printf("%d\n", final[c]);

  }
}

main() {
  add_adjacents();
}