Freigeben über


Mehrdimensionale Arrays (C)

Ein Indexausdruck von Indizes kann mehrere auch wie folgt:

expression1 [expression2] [expression3]...

Indexausdruck employees von links nach rechts.Die am weitesten links stehende Indexausdruck, expression1**[expression2], wird zuerst ausgewertet.Die Adresse, die für das Hinzufügen von expression1 und von expression2 entsteht, bildet einen Zeiger Ausdruck. Anschließend werden expression3 Ausdruck für diesen Zeiger auf Hinzufügen, um einen neuen Zeiger Ausdruck gebildet werden usw., bis die letzte Indexausdruck hinzugefügt wurde.Der Dereferenzierungsoperator (***) wird, nachdem der letzte indizierte Ausdruck ausgewertet wird, es sei denn, der abschließende Zeigerwert einen Arraytyp adressiert wird (siehe Beispiele unten) angewendet.

Ausdrücke mit mehreren von Indizes verweisen auf Elemente von „mehrdimensionalen Arrays“ angezeigt. Ein mehrdimensionales Array ist ein Array, dessen Elemente Arrays sind.Beispielsweise ist das erste Element eines dreidimensionalen Arrays ein Array mit zwei Dimensionen.

Beispiele

Für die folgenden Beispiele wird ein Array mit prop mit dem Namen deklariert drei Elemente, von denen jedes ein Array mit 4 by-6 int-Werte ist.

int prop[3][4][6];
int i, *ip, (*ipp)[6];

Ein Verweis auf den prop Array sieht wie folgt aus:

i = prop[0][0][1];

Im oben gezeigten Beispiel wird gezeigt, wie das zweite Einzelpersonen int-Element aus propverweist.Arrays sind nach Zeile gespeichert. Daher unterscheidet sich der letzte Feldindex am schnellsten. prop[0][0][2] der Ausdruck verweist das folgende () das dritte Element des Arrays an usw.

i = prop[2][1][3];

Diese Anweisung ist ein komplexerer Verweis auf ein einzelnes Element aus prop.Der Ausdruck wird ausgewertet wie folgt:

  1. Der erste Index, 2, wird durch die Größe eines Arrays int by-6 4 multipliziert, und der Zeigerwert prophinzugefügt.Das Ergebnis zeigt auf den dritten Array von by-6 4 prop.

  2. Der zweite Index, 1, wird durch die Größe des Arrays int multipliziert mit 6 Elementen hinzugefügt und mit der Adresse, die von prop[2]dargestellt wird.

  3. Jedes Element des Arrays mit 6 Elementen ist ein Wert int , sodass der endgültige Index, 3, um die Größe von int multipliziert, bevor er an prop[2][1]hinzugefügt wird.Der resultierende Zeiger behandelt das vierte Element des Arrays mit 6 Elementen.

  4. Der Dereferenzierungsoperator wird zum Zeigerwert angewendet.Das Ergebnis ist das int-Element an diese Adresse.

Diese beiden folgenden Beispielen werden fälle, in denen der Dereferenzierungsoperator nicht angewendet wurde.

ip = prop[2][1];

ipp = prop[2];

Im ersten dieser Anweisungen ist der Ausdruck prop[2][1] ein gültiger Verweis auf den dreidimensionalen Array prop. Er verweist auf ein Array mit 6 Elementen (oben) deklariert.Da der Zeigerwert ein Array adressiert, wird der Dereferenzierungsoperator nicht angewendet.

Ebenso ist das Ergebnis des Ausdrucks prop[2] in der zweiten Anweisung ipp = prop[2]; ein Zeigerwert, der ein zweidimensionales Array behandelt.

Siehe auch

Referenz

Tiefgestellter Operator: []