Bisher haben wir eindimensionale Felder kennengelernt, die einer einfachen Liste entsprachen. Für viele Zwecke benötigt man aber mehrdimensionale Felder. Im Folgendem wollen wir ein Schachbrett simulieren. Ein Schachbrett hat 8 x 8 Felder, die wir mit einem zweidimensionalen Array darstellen können
int brett[8][8];
Man kann sich das Brett wie ein Koordinatensystem vorstellen, wobei man mit dem ersten Index die Y-Achse und mit dem zweiten Index die X-Achse anspricht: brett[Y][X]. In der Programmierung empfiehlt es sich den Ursprung des Koordinatensystems in die obere linke Ecke zu legen, wie es in der unteren Grafik zu sehen ist. Insgesamt haben wir hier 8 * 8 Elemente, also 64. Die blauen Zahlen sollen Werte darstellen, diesen Stand erhalten wir mit folgendem Code. Man kann sich vorstellen, dass ein Wert einer bestimmten Spielfigur entspricht.
brett[2][1] = 1; brett[4][2] = 2; brett[3][5] = 3; brett[6][7] = 4;
Hier nun das komplette Programm mit Ausgabe, für welche wir aufgrund der zwei Achsen auch zwei verschachtelte Schleifen benötigen, um jeden Wert erreichen zu können.
int brett[8][8] = { 0 };
brett[2][1] = 1;
brett[4][2] = 2;
brett[3][5] = 3;
brett[6][7] = 4;
int i, j;
// Schleife fuer Zeilen, Y-Achse
for(i=0; i<8; i++) {
// Schleife fuer Spalten, X-Achse
for(j=0; j<8; j++) {
printf("%d ", brett[i][j]);
}
printf("\n");
}
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 3 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0
Initialisierung
Die Initialisierung zweidimensionaler Felder erfolgt nach unserer Definition der Achsen spaltenweise.
int brett[8][8] = { 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4 };
1 2 3 4 5 6 7 8 1 2 3 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Allgemein wird bei Null angefangen zu zählen und von rechts her hochgezählt. Bei unserem Beispiel mit zwei Dimensionen und 12 Initialisierungs-Werten sind dabei folgende Indexierungen betroffen:
Zeile 1: [0][0], [0][1], [0][2], [0][3], [0][4], [0][5], [0][6], [0][7]
Zeile 2: [1][0], [1][1], [1][2], [1][3]




