Operador de subíndice:
postfix-expression [ expression ]
Comentarios
Una expresión de sufijo (que también puede ser una expresión primaria) seguida del operador suscrito, [], especifica la indización de matrices.
Para obtener información sobre las matrices administradas, vea matriz (Visual C++).
Normalmente, el valor representado por la sufijo-expresión es un valor de puntero, como un identificador de matriz, y la expresión es un valor entero (tipos enumerados incluida.Sin embargo, todo lo que necesita sintácticamente es que una de las expresiones es de tipo de puntero y el otro es de tipo entero.Así el valor entero podría estar en la posición de la sufijo-expresión y el valor del puntero puede ser en corchetes en la posición de la expresión o el subíndice.Observe el fragmento de código siguiente:
int nArray[5] = { 0, 1, 2, 3, 4 };
cout << nArray[2] << endl; // prints "2"
cout << 2[nArray] << endl; // prints "2"
en el ejemplo anterior, la expresión nArray[2] es idéntica a 2[nArray].La razón es que el resultado de una expresión suscrita e1**[***e2 *] está determinado por:
* ((e2)*+ ***(**e1))
La dirección producida por la expresión no está a bytes e2 de dirección e1.En lugar, escala la dirección para producir el siguiente objeto en la matriz e2.Por ejemplo:
double aDbl[2];
Las direcciones de aDb[0] y de aDb[1] de 8 bytes a — el tamaño de un objeto de Dobleescrito.Este ajuste de escala según el tipo de objeto se realiza automáticamente el lenguaje C++ y se define en operadores aditivos donde la suma y resta de operandos de tipo de puntero se explica.
Una expresión suscrita también puede tener varios subíndices, como sigue:
*expression1 *[expression2][expression3]…
Expresiones suscritas asocian de izquierda a derecha.la expresión suscrita de izquierda, expression1**[expression2], se evalúa primero.La dirección que resulta de agregar expression1 y expression2 forma una expresión de puntero; a continuación expression3 se agrega a esta expresión de puntero para formar una nueva expresión de puntero, etc. hasta que se haya agregado la expresión suscrita última.Aplicar el operador de direccionamiento indirecto (***) después de que se evalúe la expresión subscripted última, a menos que el valor del puntero de final ejecute un tipo de matriz.
Las expresiones con varios subíndices hacen referencia a elementos de matrices multidimensionales.Una matriz multidimensional es una matriz cuyos elementos son matrices.Por ejemplo, el primer elemento de una matriz tridimensional es una matriz con dos dimensiones.El ejemplo siguiente declara e inicializa una matriz bidimensional simple 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;
}
Vea también
Referencia
Operador Prioridad y Asociatividad