我应该发布完整的代码。
int f(int x, int *y) {
static int a =0;
int b =0;
while(b<x) {
a =a +y[b];
b =b +1;
}
return a;
}
int main(int argc, char **argv){
int z[5] ={1,2,3,4,5};
int r1, r2;
r1 =f(3, z);
r2 =f(1, z+1);
}
r2的值是8.这里的z + 1是什么?
答案 0 :(得分:1)
表达式z+1
是指针算术的一个示例。
数组z
衰减到指向数组第一个元素的指针,即&z[0]
。 z+1
表示&#34;获取z
中包含的地址,并将1个数组元素添加到该地址&#34;。这与&z[1]
相同。
所以这个函数调用:
r1 =f(3, z);
传递z
的第一个元素的地址,导致数组z
在函数中可见。
在此函数调用中:
r2 =f(1, z+1);
它传递z
的第二个元素的地址。因此该函数能够从第二个元素开始查看数组。