ciao,
secondo me, e mi potrei sbagliare, una matrice è semplicemente un vettore che ha due indici al posto di uno, quindi riferendoci alla matrice matrix[2][2] ci riferiamo ad un puntatore come si fa di solito con i vettori unidimensionali, almeno credo sia così, la cosa mi sembra interessante, e spero che qualcuno ci illumini a riguardo.

per quanto riguarda la cosa della dimensione, beh la dimensione la devi cmq decidere a priori, forse però, se ho ben capito quello che vuoi fare, potresti usare un calloc per riallocare la matrice in maniera automatica...