5.5 Arreglos Multidimencionales
Un arreglo multidimensional se presenta a menudo como una malla de elementos. Cada elemento está identificado por un par de índices. Por convención, el primer índice es identificado como la fila (renglón) y el segundo índice como la columna.
Considere un arreglo con tres filas y dos columnas definidas como: int a [3][2]
El compilador de C reservaría espacio para un arreglo de 6 (= 2×3) enteros y ordena los elementos como sigue:
La tabla intenta mostrar como el elemento referenciado como a[0][0] es almacenado en el comienzo de los 6 elementos de un arreglo unidimensional. El elemento a [0][l] se almacena en la siguiente posición (índice 1) y así sucesivamente. Cada fila del arreglo bidimensional se almacena contiguamente en memoria. El último elemento de una fila es seguido por el primer elemento de la próxima fila.
Una formula elemental calculara el índice de i y j. La fórmula en este caso es 2i + j. No es difícil ver cromo se deriva esta fórmula. Cada fila es de dos elementos; así, el primer elemento de la fila i está en la posición 2i. Entonces la posición de la columna j se encuentra sumando j a 2i. Este análisis también muestra como la formula se generaliza para un arreglo con N columnas. N × i + j.
El siguiente código muestra como el ensamblador trabaja esto, así, el compilador esencialmente convierte el código a: x = _(&a[0][0] + 2_i + j );
|