什么是整数列表的结果加上C中的整数?

时间:2017-11-20 17:50:50

标签: c

我应该发布完整的代码。

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是什么?

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的第二个元素的地址。因此该函数能够从第二个元素开始查看数组。