0 votes 0 votes #include<stdio.h> int(*foo())[3] { static int a[3]={1,2,3}; printf("%d",*a); return &a; } int main() { static int (*p)[3]; p=foo(); printf("%d",*(*p+2)); return 0; } i try to make picture representation i think this is wrong please make correct Programming in C programming-in-c programming + – Gurdeep Saini asked Nov 16, 2018 Gurdeep Saini 453 views answer comment Share Follow See all 5 Comments See all 5 5 Comments reply Show 2 previous comments Gurdeep Saini commented Nov 16, 2018 reply Follow Share https://ideone.com/jVID1d correct answer is 0 votes 0 votes Gurdeep Saini commented Nov 16, 2018 reply Follow Share @hemnath in your code printf("\t%d\t",**p); when p contain base address of a then why we are dereferencing p two times ?? 0 votes 0 votes srestha commented Nov 16, 2018 reply Follow Share https://www.allinterview.com/showanswers/13847/what-is-the-difference-between-declaration-and-definition.html During declaration we just specify the type and no memory is allocated to the variable. But during the definition an initial value is assigned and memory is allocated to the variable. So, in the below line memory will not created static int (*p)[3]; 0 votes 0 votes Please log in or register to add a comment.