In C you are able to pass multidimensional arrays as pointers. Although the compiler does not know the length of the array itself (char a[2] stores no length) it does need to know the length of the rows in order to make the replacement spirit mentioned in his post. So how do we declare such a function? In C, it is

Code:
void foo(int array[][20]);
// or equivalently (pointer and array are more or less the same data type in C)
void foo(int (*array)[20]);


the following code is wrong since it receives a pointer to an array, not a pointer to a pointer:

Code:
void foo(int **array);