Suche
Suche Menü

Mehrdimensional

Je mehr Dimensionen vorliegen, desto anspruchsvoller ist die Zeigerarithmetik. Wie wir gesehen haben, benötigen wir immer eine Startadresse eines Feldes, um dann zu bestimmten Positionen springen zu können. Um sich in einem mehrdimensionalen Feld zu bewegen, ist es notwendig, dass man die Größen kennt. Zum Einen, um die Array-Grenzen nicht zu überschreiten. Zum Anderen, um die Positionen der Elemente bestimmen zu können.

// Array und Spaltengrenze setzen
int brett[8][8]={ 0 }, Y_Max=8;

// Startposition
int *posStart = &brett[0][0];

// Testwert setzen
brett[2][4] = 7;

// Beschaffung Testwert mit Zeigerarithmetik
int *pos;
pos = posStart + (2 * Y_Max) + 4;

printf("%d\n", *pos );

7

Die entscheidende Programmzeile ist die, in der der Positionszeiger pos gesetzt wird. Seine Basis ist die Startadresse des Arrays. Benötigt wird der Wert in Zeile 2 und Spalte 4, Index [2][4]. Um dorthin zu kommen, müssen wir uns erst zeilenweise und dann spaltenweise vorarbeiten. Also setzen wir den Zeiger auf das erste Element in Zeile 2. Eine Zeile hat 8 Spalten-Elemente, also müssen wir den Zeiger 2 * 8 Elemente weiterrutschen. Zum Schluss addieren wir noch die 4, um in die vierte Spalte zu springen.