Here is a c program

```
#include<stdio.h>
main()
{
 int(*p)[3][4];
 printf("size of p= %d",sizeof(p));
 printf("size of *p= %d",sizeof(*p));
 return 0;
}

```

I can understand that size of (\*p) should be the total size of the array i.e.48 bytes in this case.
But gcc version 4.2.1 gives the size of p = 8.
WHY?