Matrices multidimensionales (c)

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 (vea ejemplos siguientes).

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.

Ejemplos

Para los ejemplos siguientes, una matriz denominado prop se declara con tres elementos, que es una matriz por 4 de los valores de int .

int prop[3][4][6];
int i, *ip, (*ipp)[6];

Una referencia a la matriz de prop tiene el siguiente aspecto:

i = prop[0][0][1];

El ejemplo anterior muestra cómo hacer referencia al segundo elemento individual de int de prop.Las matrices se almacenan por fila, por lo que el subíndice último varía lo más rápidamente posible; la expresión prop[0][0][2] hace referencia (el tercer) siguiente elemento de la matriz, y así sucesivamente.

i = prop[2][1][3];

esta instrucción es una referencia más compleja a un elemento individual de prop.La expresión se evalúa como sigue:

  1. El primer subíndice, 2, se multiplica por el tamaño de una matriz de 4 int por y agregado al valor del puntero prop.Los puntos del resultado al tercer matriz por 4 de prop.

  2. El segundo subíndice, 1, se multiplica por el tamaño de la matriz de int de 6 elementos y agregado la dirección representada por prop[2].

  3. Cada elemento de la matriz de 6 elementos es un valor de int , por lo que el subíndice final, 3, se multiplica por el tamaño de int antes de que se agregue a prop[2][1].El puntero resultante dirige el cuarto elemento de matriz de 6 elementos.

  4. Aplicar el operador de direccionamiento indirecto al valor del puntero.el resultado es el elemento de int en esa dirección.

Estos dos casos de presentación siguientes de los ejemplos donde no al operador de direccionamiento indirecto.

ip = prop[2][1];

ipp = prop[2];

En la primera de estas instrucciones, la expresión prop[2][1] es una referencia válida a la matriz tridimensional prop; hace referencia a una matriz de 6 elementos (declarado anteriormente).Desde las direcciones del valor de puntero una matriz, el operador de direccionamiento indirecto no se aplica.

De igual forma, el resultado de la expresión prop[2] en la segunda instrucción ipp = prop[2]; es un valor de puntero que dirige una matriz bidimensional.

Vea también

Referencia

Operador de subíndice: []