Em C, as matrizes são armazenadas em memória contígua, assim como os vetores. Isso significa que todos os seus elementos ocupam posições consecutivas na memória.
No caso das matrizes bidimensionais, a linguagem utiliza o padrão conhecido como row-major order (ordem por linhas).
No modelo row-major, os elementos da matriz são armazenados da seguinte forma:
Considere a matriz:
1 2 3
4 5 6
Na memória, os elementos serão organizados assim:
1 2 3 4 5 6
Ou seja, a matriz é armazenada como se fosse um único vetor contínuo.
Essa forma de armazenamento permite interpretar a matriz como um vetor de vetores, onde cada linha é armazenada sequencialmente.
Por exemplo:
int mat[2][3];
Na memória, temos:
mat[0][0], mat[0][1], mat[0][2]mat[1][0], mat[1][1], mat[1][2]Todos armazenados em sequência.