Zweidimensionale Arrays
Neben Doppelzeigern gibt es auch eine Alternative, nämlich zweidimensionale Arrays. In diesem Beitrag lernst du, wie diese funktionieren.
Inhaltsübersicht
Eindimensionaler und zweidimensionaler Array
Eindimensionale Arrays definierst du ganz normal:
Mit zweidimensionalen funktioniert es ähnlich. Das Einzige, was sich während der Deklaration ändert, ist das hinzufügen der zweiten Dimension durch einen weiteren Wert.
Verschachtelung der Arrays
Aber was bewirkt dieser zweite Wert nun? Durch das Hinzufügen dieses Werts kreieren wir sozusagen ein verschachteltes Array. Das heißt, dass n für unsere Zeilen steht und m für unsere Spalten. Das liegt daran, dass wir, wenn wir unser Feld „verschachteln“, ein zweites Array mit m Werten in jeden unserer n Einträge des ersten Feldes einfügen.
array [n] spricht nun also jeweils Felder mit m Komponenten an und array [n] [m] gibt konkrete Werte an dieser Stelle des Arrays aus. Ein zweidimensionales Array verhält sich also ähnlich wie ein Koordinatensystem.
Zweidimensionales Array im Arbeitsspeicher
Im Arbeitsspeicher sieht ein solches Konstrukt etwa so aus:
Auf der ersten Ebene haben wir unser „Standard-Array“, dessen Einträge jeweils auf Einträge des zweiten Feldes verweisen. Wenn du eine so abgespeicherte Variable ansprichst, musst du allerdings einige Dinge beachten.
Erstens: Die Adresse von array [n] [m] verhält sich genauso, wie die von normalen Arrays und zeigt damit nicht auf die n-te Zeile und die m-te Spalte, sondern auf die n-1-te Zeile und die m-1-te Spalte.
Zweitens: Auch für zweidimensionale Felder wird der Speicherplatz statisch reserviert. Das heißt für dich; keine dynamische Erweiterung oder Verringerung während der Laufzeit deines Programmes. Der reservierte Bereich kann jedoch wie gehabt auch nur teilweise benutzt werden.
Anwendung bei statischen Matrizen
Aber wofür brauchst du solche Felder überhaupt? Meist werden zweidimensionale Arrays nur als Tabellen eingesetzt, um das Deklarieren von unnötig vielen Variablen zu vermeiden. In sehr seltenen Fällen werden auch Felder eingesetzt, die mehr als zwei Dimensionen haben. Einer dieser seltenen Fälle wäre die Speicherung von Koordinaten im Raum.
Viele werden aber auch für die Rechnung mit statischen Matrizen eingesetzt, da durch die Nutzung eines Arrays die Berechnung eines solchen Gebildes mittels nur zwei verschachtelter for-Schleife erfolgen kann.
Eine solche Funktion sieht in etwa so aus:
Zuerst erhalten wir unsere zu berechnende Matrix aus unserer Main-Funktion. Dann deklarieren wir unsere Indizes, damit wir kontrolliert durch die Zeilen und Spalten wandern können.
Mit dem Index für unsere Zeilen starten wir nun unsere erste for-Schleife, die wir solange durchlaufen, bis wir zur letzten Zeile unseres Arrays kommen.
In diese for-Schleife legen wir eine weitere, in der wir Eintrag für Eintrag die Spalten unserer aktuellen Zeile durchlaufen und die Rechenaktion durchführen, die hier geplant ist. Durch die verschachtelte Natur dieser Funktion können wir also jede Zeile Eintrag für Eintrag durchlaufen, bevor wir zur nächsten springen und dort das Ganze von vorn beginnen.
Jetzt weißt du nicht nur, wie mehrdimensionale Arrays funktionieren, sondern auch, wie du sie anwendest.