Consider the following C program.
#include <stdio.h> int main () { int a[4] [5] = {{1, 2, 3, 4, 5}, {6, 7,8, 9, 10}, {11, 12, 13, 14, 15}, {16, 17,18, 19, 20}}; printf(“%d\n”, *(*(a+**a+2)+3)); return(0); }
The output of the program is _______.
Concept:
a = address of 0th index of 2D array i.e address of 1D array {1,2,3,4,5}.
*a = address of 0th index element of 0th index of above array i.e address of first element of array(1)
**a = value of 0th index element of 0th index of array above i.e 1.
Similarly (a+3) represents address of 3rd index of 1-D array, *(a+3) represents address of 0th index of 3rd index of 1D array i.e address of 16
'$a$' is a two dimensional array.
Correct Answer: $19.$
for practice : https://gateoverflow.in/254355/test-series-question
Answer : 19
a[4] [5] = {{1, 2, 3, 4, 5},
{6, 7,8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17,18, 19, 20}};
Lets solve step-by step :
step1- * ( * ( a + ( * ( * a ) ) + 2 ) + 3 ) // note : ( *(* a)) = 1
step2- * ( * ( ( (a + 1 )+ 2) ) + 3 )
step3- * ( * ( a + 3) +3) // note : *(a+3) is address of the memory location where 16 is stored or address of 4th row
step4- * ( * ( a + 3) +3) // note. : *(a+3)+3 now its the address of 4th row and 4th column index. (a+0) is 1st row so a+3 is 4th row or address of 19
step5- * ( * ( a + 3) +3) means value stored at 4th row and 4th column .
so , 19
64.3k questions
77.9k answers
244k comments
80.0k users