在此代码中:
#include <stdio.h>
int fun (int *x, int i) {
int r;
printf("%d\n", *(x+i/2));
r = *x + i / 2 + *(x + i / 2);
return r;
}
int main (void) {
int x[] = {8, 7, 6, 5, 4, 3, 2, 1};
printf("%d", fun(x, 7));
return 0;
}
我无法理解,为什么*(x + i / 2)= 5?
答案 0 :(得分:0)
*(x)
将是数组的第一个元素,8
*(x+i/2) == *(x+7/2) == *(x+3) == x[3] == 5
请注意
a)整数除法(舍入)
b)指针算术,*(x+1)
正在查看第二个数组条目,而不是第二个字节