# GATE | GATE IT 2006 | Question 51

• Last Updated : 28 Jun, 2021

Which one of the choices given below would be printed when the following program is executed?

Attention reader! Don’t stop learning now.  Practice GATE exam well before the actual exam with the subject-wise and overall quizzes available in GATE Test Series Course.

Learn all GATE CS concepts with Free Live Classes on our youtube channel.

 `#include``int` `a1[] = {6, 7, 8, 18, 34, 67};``int` `a2[] = {23, 56, 28, 29};``int` `a3[] = {-12, 27, -31};``int` `*x[] = {a1, a2, a3};``void` `print(``int` `*a[])``{``            ``printf``(``"%d,"``, a[0][2]);``            ``printf``(``"%d,"``, *a[2]);``            ``printf``(``"%d,"``, *++a[0]);``            ``printf``(``"%d,"``, *(++a)[0]);``            ``printf``(``"%d\n"``, a[-1][+1]);``}``main()``{``             ``print(x);``}`

(A) 8, -12, 7, 23, 8
(B) 8, 8, 7, 23, 7
(C) -12, -12, 27, -31, 23
(D) -12, -12, 27, -31, 56

Explanation:

int `*x[]` = {a1, a2, a3}; line makes x[0] = a1 and likewise. Therefore whenever x[0] is referenced, internally a1 array is being looked upon.

a[0][2] = a1[2] = 8

*a[2] = *a3 = a3[0] = -12

*++a[0] = *(++a[0]) = a1[1] = 7 : a[0] is now pointing to second element of a1.

*(++a)[0] = *a2 = a2[0] = 23 : a is now pointing to array a2.

a[-1][+1] = *(a1+1+1) = a1[2] = 8 : *(a-1) = a1+1 due to last two expressions.

Hence, correct answer would be (A) 8, -12, 7, 23, 8.

This solution is contributed by vineet purswani .

Quiz of this Question

My Personal Notes arrow_drop_up