我正在尝试将原始函数更改为仅具有指针算术(不能下标)来访问数组元素。我想消除循环索引变量,并在函数中全部使用[]运算符。我只是想添加第一个和最后一个元素,然后在第二个元素之后添加第二个元素,依此类推。]
原始功能
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;
}
}
我正在尝试将原始函数更改为仅具有指针算术(不能下标)来访问数组元素。我想消除循环索引变量,并且不使用[]运算符...
您将需要一个在a1末尾的指针,并递减该指针,直到它与a1相遇。