Mehrdimensionale Arrays
Kurz: Ein Array, dessen Elemente selbst wieder Arrays sind — dadurch lassen sich Tabellen, Matrizen oder Gitterstrukturen abbilden, etwa ein Schachbrett oder ein Pixelraster.
Genauer: Ein zweidimensionales Array wird über zwei Indizes angesprochen (Zeile und Spalte, z. B. feld[2][5]), ein dreidimensionales über drei usw. Intern ist ein mehrdimensionales Array meist nichts anderes als ein Array von Arrays — jede “Zeile” kann dabei sogar unterschiedlich lang sein (“jagged array”), was bei echten Matrizen mit fester Breite selten genutzt wird.
Im Detail
schachbrett = neues Array[8][8] // 8 Zeilen, je 8 Spalten
schachbrett[3][4] = "Turm"Ein zweidimensionales Array lässt sich als Tabelle vorstellen: der erste Index wählt die Zeile, der zweite die Spalte innerhalb dieser Zeile aus. Zum Durchlaufen jedes Elements braucht man entsprechend zwei ineinander verschachtelte Schleifen — die äußere für die Zeilen, die innere für die Spalten:
fuer zeile von 0 bis 7:
fuer spalte von 0 bis 7:
verarbeite(schachbrett[zeile][spalte])Ein wichtiger Unterschied zwischen Sprachen: Manche implementieren mehrdimensionale Arrays als EIN zusammenhängenden Speicherblock mit fester Gesamtgröße (echte Matrix, alle Zeilen garantiert gleich lang), andere als Array von unabhängigen Arrays (“jagged array” / “Array von Arrays”) — dort kann theoretisch jede Zeile eine andere Länge haben, was flexibler, aber auch fehleranfälliger ist (man kann nicht mehr blind annehmen, dass jede Zeile gleich lang ist).
Mehrdimensionale Arrays werden über reine Tabellen hinaus für alles verwendet, was sich natürlich als Gitter modellieren lässt: Bildverarbeitung (jedes Pixel hat eine Zeile/Spalte-Position), Spielfelder (Schach, Sudoku, Tic-Tac-Toe), oder mathematische Matrizen für lineare Algebra. Bei mehr als zwei oder drei Dimensionen wird der Code schnell unübersichtlich — dann lohnt sich oft eine spezialisiertere Datenstruktur oder Bibliothek statt eines rohen, mehrfach verschachtelten Arrays.