Friday 11 November 2011

Predict the output or error(s) for the following:

#include<stdio.h>

main()

{

int a[2][2][2] = { {10,2,3,4}, {5,6,7,8}  };


int *p,*q;


p=&a[2][2][2];


*q=***a;


printf("%d----%d",*p,*q);


}

Answer:

SomeGarbageValue---1

Explanation:

p=&a[2][2][2]  you declare only two 2D arrays, but you are trying to access the third 2D(which you are not declared) it will print garbage values. *q=***a starting address of a is assigned integer pointer. Now q is pointing to starting address of a. If you print *q, it will print first element of 3D array.

2 comments: