Freigeben über


Tiefgestellter Operator:

postfix-expression [ expression ]

Hinweise

Ein Postfixausdruck (der ein primärer Ausdruck sein kann), worauf tiefgestellten Operator gibt []Arrayindizierung an.

Weitere Informationen über verwaltete Arrays finden Sie unter Array (Visual C++).

Normalerweise ist der Wert, der von Postfixausdruck dargestellte ein Zeigerwert, wie ein Matrixname und Ausdruck ist ein Ganzzahlwert (einschließlich Enumerationstypen).Allerdings ist, der alle syntaktisch erforderlich ist, um diese Ausdrücke ist vom Zeigertyp und der andere Ausdruck ist vom ganzzahligen Typ.Daher kann der ganzzahlige Wert in der Postfixausdrucks Zeilenposition sein, und der Zeigerwert konnte in eckige Klammern im Ausdruck oder tiefgestellten Position sein.Betrachten Sie das folgende Codefragment:

   int nArray[5] = { 0, 1, 2, 3, 4 };
   cout << nArray[2] << endl;            // prints "2"
   cout << 2[nArray] << endl;            // prints "2"

Im vorherigen Beispiel ist der Ausdruck nArray[2] zu 2[nArray]identisch.Der Grund hierfür ist, dass das Ergebnis eines Indexausdrucks e1**[***e2 *] durch angegeben ist:

((" * ")())e1+ e2

Die Adresse, die durch den Ausdruck ausgegeben wird, ist nicht die Absenderadresse e1e2 Bytes.Stattdessen wird die Adresse skaliert, um das nächste Objekt im Array e2zu führen.Beispiele:

double aDbl[2];

Die Adressen der aDb[0] und aDb[1] sind 8 Bytes ab.Die Größe eines Objekts vom Typ double.Diese Skalierung nach Objekttyp ist automatisch von der Programmiersprache C++ ausgeführt und wird in Additive Operatoren definiert, wobei Addition und Subtraktion von Operanden des Zeigertyps erläutert wird.

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 angewendet, nachdem der letzte indizierte Ausdruck ausgewertet wird, es sei denn, der abschließende Zeigerwert einen Arraytyp behoben werden.

Ausdrücke mit mehreren von Indizes verweisen auf Elemente eines mehrdimensionalen Arrays an.Ein mehrdimensionales Array ist ein Array, dessen Elemente Arrays sind.Beispielsweise ist das erste Element eines dreidimensionalen Arrays ein Array mit zwei Dimensionen.Das folgende Beispiel deklariert und initialisiert ein einfaches zweidimensionales Array von Zeichen:

// expre_Subscript_Operator.cpp
// compile with: /EHsc
#include <iostream>

using namespace std;
#define MAX_ROWS 2
#define MAX_COLS 2

int main() {
   char c[ MAX_ROWS ][ MAX_COLS ] = { { 'a', 'b' }, { 'c', 'd' } };
   for ( int i = 0; i < MAX_ROWS; i++ )
      for ( int j = 0; j < MAX_COLS; j++ )
         cout << c[ i ][ j ] << endl;
}

Siehe auch

Referenz

Postfixausdrücke

C++-Operatoren

Operatorrangfolge und Assoziativität

Arrays (C++)

Konzepte

Eindimensionale Arrays

Mehrdimensionale Arrays (C)