Wie initialisiere ich ein mehrdimensionales Array korrekt in C?

Melden
  1. Grundlagen zu Arrays in C
  2. Deklaration eines mehrdimensionalen Arrays
  3. Initialisierung bei Deklaration
  4. Teilweise Initialisierung
  5. Alternative Initialisierung ohne explizite Größenangabe
  6. Mehrdimensionale Arrays mit mehr als zwei Dimensionen
  7. Wichtiges zur Speicherordnung
  8. Fazit

Grundlagen zu Arrays in C

Ein Array in C ist eine zusammenhängende Speicherstruktur, die mehrere Werte des gleichen Datentyps speichert. Mehrdimensionale Arrays sind im Prinzip Arrays von Arrays. Beispielsweise ist ein zweidimensionales Array ein Array, dessen Elemente selbst einfache eindimensionale Arrays sind.

Deklaration eines mehrdimensionalen Arrays

Die Deklaration eines zweidimensionalen Arrays erfolgt typischerweise folgendermaßen:

datentyp arrayname ;

Beispiel:

int matrix ;

Dies definiert ein Array namens matrix mit 3 Zeilen und 4 Spalten, also insgesamt 12 Elemente vom Typ int.

Initialisierung bei Deklaration

Arrays können direkt bei der Deklaration mit Werten initialisiert werden. Bei mehrdimensionalen Arrays geschieht dies durch verschachtelte geschweifte Klammern (Braces), die die einzelnen Dimensionen gruppieren.

Beispiel für ein 2x3 Array:

int matrix = { {1, 2, 3}, {4, 5, 6}};

Hierbei werden die Werte entsprechend den Zeilen und Spalten zugeordnet. Die äußeren Klammern umfassen die gesamte Initialisierung, die inneren Klammern je eine Zeile.

Teilweise Initialisierung

Es ist auch möglich, nur einige Teile des Arrays zu initialisieren. Nicht angegebene Elemente werden dann automatisch mit Null initialisiert.

int matrix = { {1, 2}, // 3. Element wird 0 sein {4} // 2. und 3. Element werden 0 sein};

In diesem Beispiel hat matrix den Wert 0 und matrix sowie matrix ebenfalls 0.

Alternative Initialisierung ohne explizite Größenangabe

Wenn Sie die Größe der ersten Dimension nicht explizit angeben, kann sie vom Compiler bestimmt werden anhand der Anzahl der Zeilen in der Initialisierung:

int matrix = { {1, 2, 3}, {4, 5, 6}};

Hierbei wird die Anzahl der Zeilen automatisch auf 2 gesetzt, da zwei Initialisierungszeilen angegeben sind.

Mehrdimensionale Arrays mit mehr als zwei Dimensionen

Das Prinzip bleibt gleich. Beispiel für ein dreidimensionales Array:

int tensor = { { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} }, { {13, 14, 15, 16}, {17, 18, 19, 20}, {21, 22, 23, 24} }};

Hier werden die Werte dreidimensional in einer verschachtelten Struktur angegeben. Die äußerste Klammer steht für die erste Dimension, die nächste für die zweite und die innerste für die dritte.

Wichtiges zur Speicherordnung

Beim Zugriff auf mehrdimensionale Arrays in C verwendet der Compiler eine sogenannte zeilenweise Speicherung (row-major order). Das bedeutet, die Elemente werden im Speicher zeilenweise hintereinander abgelegt. Dies ist wichtig, wenn Sie z.B. Pointerarithmetik auf Arrays anwenden möchten oder Performanceoptimierungen vornehmen.

Fazit

Zur korrekten Initialisierung eines mehrdimensionalen Arrays in C sollten Sie zunächst die richtige Größe deklarieren. Anschließend können Sie bei der Deklaration alle Werte mit verschachtelten geschweiften Klammern angeben. Alternativ füllt der Compiler nicht initialisierte Werte mit Null auf. Die Verwendung solcher Arrays ist fundamental in C und wird in vielen Anwendungen eingesetzt.

0

Kommentare