Related Articles
C | Pointer Basics | Question 13
• Difficulty Level : Easy
• Last Updated : 05 Feb, 2013

 `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

Explanation: Let us understand this line by line

```  /* 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;```

Attention reader! Don’t stop learning now. Get hold of all the important C++ Foundation and STL concepts with the C++ Foundation and STL courses at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :