L'ordinamento della matrice è uguale all'ordinamento dell'array. Questo perché sono la stessa cosa, solo che la dichiariamo diversamente... per comodità.
int array[]={10,20,30,40,50,60,70,80,90};
int matrice[][3]={{10,20,30},{40,50,60},{70,80,90}};
Sia array che matrice utilizzano la stessa memoria. La prima viene indirizzata direttamente la seconda con un calcolo.
// Entrambi stampano il 4^ Elemento
printf ("%d\n",matrice[1][1]);
printf ("%d\n",*(&matrice[0][0]+4));
Ti lascio un ulteriore esempio:
#include <stdio.h>
#define SIZE 10
int main ()
{
int x,y,m[SIZE][SIZE];
int *ptr=&m[0][0];
for (x=0;x<SIZE;x++)
for (y=0;y<SIZE;y++)
m[x][y]=x*SIZE+y;
for (x=0;x<SIZE*SIZE;x++)
printf ("m[%d]=%d ",x,*ptr++);
printf ("\n");
return 0;
}