Compartir a través de


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

Expresiones de sufijo

Operadores de C++

Operador Prioridad y Asociatividad

Matrices (C++)

Conceptos

Matrices unidimensionales

Matrices multidimensionales (c)