A two-dimensional array is an array of arrays.
An "array of T
" is - in most contexts - converted to a "pointer to T
, so an "array of T[N]
" is converted to a "pointer to T[N]
".
Since the memory representation of an
int arr[M][N];
is completely different from
int **dptr = malloc(M*sizeof *dptr);
for(int i = 0; i < M; ++i) {
dptr[i] = malloc(N*sizeof *dptr[i]);
an int[M][N]
cannot even be converted to an int**
.