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**.