int *p[10][20]
Here p is a 10*20 array of int pointers.
Size of p array = number of elements in array * size of each element
Assuming a 64 bit machine ,so any pointer size = 8bytes
So size of p = 10*20*8=1600
*p is an array of 20 int pointers
size of *p = number of elements in *p * size of each element = 20*8=160Bytes
If the question was int (*p)[10][20]
Then p is a pointer to 10*20 array of integers.
Since p is a pointer , sizeof(p) = 8bytes
*p is array of 10*20 integers.
Sizeof(*p)= number of elements in *p * size of each element = 10*20*4 (size of int = 4bytes) = 800Bytes.
Please someone correct me if I am wrong.