C |指针基础|问题13

null

int f( int x, int *py, int **ppz)
{
int y, z;
**ppz += 1;
z  = **ppz;
*py += 2;
y = *py;
x += 3;
return x + y + z;
}
void main()
{
int c, *b, **a;
c = 4;
b = &c;
a = &b;
printf ( "%d " , f(c, b, a));
return 0;
}


(A) 18 (B) 19 (C) 21 (D) 22 答复: (B) 说明: 让我们逐行理解这一点

  /* below line changes value of c to 5. Note that x remains unaffected by 
    this change as x is a copy of c and address of x is different from c*/
  **ppz += 1  
  
  /* z is changed to 5*/
  z  = **ppz; 
  
  /* changes c to 7, x is not changed */
  *py += 2; 
  
   /* y is changed to 7*/
  y = *py;    
  
  /* x is incremented by 3 */
   x += 3;    
  
  /* return 7 + 7 + 5*/
  return x + y + z;
© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享