Why does the below code work in the way it has?How many elements do *p,*p1,*p2 pick when used in sizeof()?
#include<stdio.h>
//consider integer to be 4 bytes size
#define R 10
#define C 20
int main()
{
int (*p)[R][C];
int *p1[R][C];
int p2[R][C];
printf("%d\n",sizeof(*p)); //output is 800
printf("%d\n",sizeof(*p1)); //output is 160
printf("%d",sizeof(*p2)); //output is 80
getchar();
return 0;
}