Operador subscrito:]

postfix-expression [ expression ]

Comentários

Uma expressão postfix (que também pode ser uma expressão primária) seguida pelo operador subscrito, [], especifica a indexação de matriz.

Para obter informações sobre os arrays gerenciados, consulte array (Visual C++).

Normalmente, o valor representado por postfix-expressão é um valor de ponteiro, como, por exemplo, um identificador de matriz, e expressão é um valor inteiro (incluindo os tipos enumerados).No entanto, tudo isso é necessário sintaticamente é que uma das expressões ser do tipo de ponteiro e o outro ser do tipo integral.Assim o valor integral poderia ser a postfix-expressão posição e o valor do ponteiro podem estar em colchetes do expressão ou posição Subscrita.Considere o fragmento de código a seguir:

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

No exemplo anterior, a expressão nArray[2] é idêntico ao 2[nArray].O motivo é que o resultado de uma expressão de subscrito e1e2 é dado por:  

*( (e2) + (e1) )

O endereço gerou pela expressão não é e2 bytes do endereço e1.Em vez disso, o endereço é dimensionado para produzir o próximo objeto na matriz e2.Por exemplo:

double aDbl[2];

Os endereços dos aDb[0] e aDb[1] são 8 bytes afastados — o tamanho de um objeto do tipo double.Esse dimensionamento de acordo com a tipo de objeto é feito automaticamente pela linguagem C++ e é definida na Operadores aditivos onde a adição e subtração de operandos do tipo de ponteiro é discutida.

Uma expressão de Subscrita também pode ter vários subscritos, da seguinte maneira:

expression1 expression2 expression3...

Expressões subscritos associar da esquerda para a direita.A expressão de Subscrita mais à esquerda, Expressão1Expressão2, é avaliado primeiro.O endereço que resulta da adição de Expressão1 e Expressão2 constitui uma expressão do ponteiro; em seguida, expression3 é adicionado a esta expressão do ponteiro para formar uma nova expressão do ponteiro, e assim por diante, até que a última expressão Subscrita foi adicionada.O operador de indireção (*) é aplicada após a última subscrito expressão é avaliada, a menos que o valor do ponteiro final atende a um tipo de matriz.

Expressões com vários subscritos se referem a elementos de matrizes multidimensionais.Uma matriz multidimensional é uma matriz cujos elementos são matrizes.Por exemplo, o primeiro elemento de uma matriz tridimensional é uma matriz com duas dimensões.O exemplo a seguir declara e inicializa uma matriz bidimensional de caracteres:

// 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;
}

Consulte também

Referência

Expressões de sufixo

Operadores do C++

Precedência e associatividade de operadores

Arrays (C++)

Conceitos

Matrizes unidimensionais

Multidimensional matrizes (C)