C-Programmierung
Speicherbild einer Matrix
Jedes mehrdimensionale Array wird auf ein eindimensionales Array abgebildet, um es im linearen Speicher ablegen zu können.

Zum Beispiel erfolgt die Abbildung der Elemente einer zweidimensionalen Matrix a mit n Spalten und m Zeilen
int a[m][n];
auf ein eindimensionales Array b mit n*m Elementen
int b[n*m];
mit der Zuordnung
b[i+j*n] = a[j][i];
Die zweidimensionale Indizierung a[j][i] entspricht der eindimensionalen Indizierung b[i+j*n].
Die lineare Abbildung einer Matrix erfolgt zeilenweise (nicht spaltenweise).
Das Speicherbild der beiden Arrays a und b ist identisch.
Beispiel:
int a[3][4];
int b[12];
for (int i=0; i<4; i++)
for (int j=0; i<3; j++)
b[i+j*4] = a[j][i];
int b[12];
for (int i=0; i<4; i++)
for (int j=0; i<3; j++)
b[i+j*4] = a[j][i];
b[] | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
a[0][0] | a[0][1] | a[0][2] | a[0][3] | a[1][0] | a[1][1] | a[1][2] | a[1][3] | a[2][0] | a[2][1] | a[2][2] | a[2][3] |
a[][] | 0 | 1 | 2 | 3 |
---|---|---|---|---|
0 | b[0] | b[1] | b[2] | b[3] |
1 | b[4] | b[5] | b[6] | b[7] |
2 | b[8] | b[9] | b[10] | b[11] |