所以我有以下代码片段:
#include <stdio.h>
void pointer_shift(int *a, int n);
int main(void) {
int a[] = {100, 101, 102};
pointer_shift(a1, 3);
}
void pointer_shift(int *a, int n) {
int i;
for (i = 0; i != n - 1; i++) {
*(a + i) = *(a + i + 1);
}
}
我只是想澄清一下这个片段中的指针是如何工作的。所以pointer_shift接受'a',一个指向int的指针,对吗?a1 被传递给此参数,并且由于数组衰减为指向其第一个元素的指针,因此它可以工作。
首先,希望我在上一段中所说的是正确的。其次,*(a + i) = *(a + i + 1); 是什么意思?实际上呢?假设我们在 for 循环的第一次迭代中,并且 i = 0。那么左侧 *a 访问的究竟是什么?它代表一个指针吗?我认为 * 是取消引用运算符,并访问指针指向的对象......然后它设置 *a = *(a + 1)。(a + 1) 是数组中的下一个元素,但这个赋值究竟做了什么,为什么?
谢谢!