Nel caso di un array di questo tipo

int a[2][3];

gli elementi allocati sono 2 x 3 -> 6 e sono posti in memoria in modo contiguo

a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]

Ma se scrivi

int *p = a[1];

il compilatore e' abbastanza "furbo" da memorizzare in p l'indirizzo dell'elemento

a[1][0]