数组中的函数指针

问题描述 投票:0回答:1

我正在尝试将原始函数更改为仅具有指针算术(不能下标)来访问数组元素。我想消除循环索引变量,并在函数中全部使用[]运算符。我只是想添加第一个和最后一个元素,然后在第二个元素之后添加第二个元素,依此类推。]

原始功能

void compute(int *a1, int n1, int *a2, int n2) {
  int i;

  for (i = 0; i < (n1 / 2); i++) {
    *(a2 + i) = *(a1 + i) + *(a1 + (n1 - 1 - i));
  }

  if (n1 % 2 == 1) *(a2 + i) = *(a1 + i);
}

到目前为止我所拥有的:

void compute(int *a1, int n1, int *a2, int n2) {
  // declaring pointers
  int *p;
  int *q;

  for (p = a1, q = a2; p < (a1 + (n1 / 2)); p++, q++) {
    *q = *p + *(p + (n1 - 1));
  }

  if (n1 % 2 == 1) {
    n2 = (n1 / 2) + 1;
    *q = *p;
  }
}

我正在尝试将原始函数更改为仅具有指针算术(不能下标)来访问数组元素。我想消除循环索引变量,并且不使用[]运算符...

c arrays pointers function-pointers
1个回答
0
投票

您将需要一个在a1末尾的指针,并递减该指针,直到它与a1相遇。

© www.soinside.com 2019 - 2024. All rights reserved.