📜  C |指针基础问题13

📅  最后修改于: 2021-05-26 01:08:06             🧑  作者: Mango

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;
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。