c / intermediate
Snippet
Row-Major-Speicherung in mehrdimensionalen Arrays
In C werden mehrdimensionale Arrays in 'Row-Major'-Reihenfolge gespeichert, was bedeutet, dass die Elemente der ersten Zeile hintereinander im Speicher abgelegt werden, gefolgt von der zweiten Zeile. Ein linearer Zugriff beweist, dass sie einen einzigen zusammenhängenden Speicherblock belegen.
snippet.c
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>int main() {int matrix[2][3] = {{1, 2, 3}, {4, 5, 6}};int *flat = (int *)matrix;for (int i = 0; i < 6; i++) {printf("%d ", flat[i]);}return 0;}
Erklärung
1
int matrix[2][3]
Deklariert ein 2D-Array mit 2 Zeilen und 3 Spalten.
2
int *flat = (int *)matrix;
Castet das 2D-Array in einen Pointer, um seine zusammenhängende Natur zu demonstrieren.