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]