Operador subscrito:]
postfix-expression [ expression ]
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;
}