Inspired this quiestion .
Why does -
void display(int p[][SIZE]) // allowed
and
void display(int p[][]) // not a
That's because caculations in pointers requires that.
When p points to 2 dimentional array that's size is SIZE
this operation p+=3
is calculated this way:
if the value of p is a constant equal ADRESS p receive this value ADRESS + 3*SIZE.
That's because arithmitic in pointers is different from arithmitic in real numbers. This calculation can't be done without knowing the size of the array.