Se scrivi uno schemino su come i dati sono conservati in memoria, lo comprendi facilmente.

Ad esempio, gli elementi dell'array

a[0][0] a[0][1] a[0][2] a[0][3] a[0][4]

sono memorizzati in sequenza a partire dall'indirizzo di a[0]

Tramite l'aritmetica dei puntatori, a partire da quell'indirizzo, si arriva agli altri elementi.

Ovviamente lo stesso dicasi in generale per

a[i][0] a[i][1] a[i][2] a[i][3] a[i][4]