I a 2D array say int a[2][3]
when we call the function say add(a);
we receive it using a pointer to an array void add(int(*p)[3])
BUT
In 1D array say int b[5]
we store address of array in a simple pointer to an integer int *p; p=b;
my question is that why don't we store b in a pointer to an array ex int(*p)[5]=b;