The second form is wrong. A two dimensional pointer does not equal to a two dimensional array. But you can use an one dimensional pointer to reference the two dimensional array.
int arr[1][20];
int *pTwoDem=(int*)arr;
Now you can use *(pTwoDem+10)
to replace arr[0][10]
.