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
auf ein eindimensionales Array b mit n*m Elementen
mit der Zuordnung
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 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] |