Una array tridimensional en ‘C’ se declara como int A[x][y][z]. Considere que los elementos de la array se almacenan en orden de fila principal y la indexación comienza desde 0. Aquí, la dirección de un elemento en la ubicación A[p][q][r] se puede calcular de la siguiente manera (donde w es la longitud de palabra de un entero):
(A) &A[0][0][0] + w(y * z * q + z * p + r)
(B) &A[0][0][0] + w(y * z * p + z*q + r)
(C) &A[0][0][0] + w(x * y * p + z * q+ r)
(D) &A[0][0][0] + w(x * y * q + z * p + r)
Respuesta: (B)
Explicación: Según la pregunta anterior, tenemos que encontrar la dirección de A[p][q][r]
Para llegar a la p-ésima fila debemos tener que cruzar 0 a p-1 fila, es decir, p filas y cada fila contiene elementos y∗z
Por eso ,
= y∗z∗p
Ahora, para alcanzar el elemento q en la fila p, tenemos que cruzar filas q y cada fila contiene elementos z (columnas totales)
=z∗q
para llegar a los elementos r tenemos que cruzar los elementos r en la fila (p+1)
Total de elementos a cruzar =(y∗z∗p+z∗q+r)
Ahora cada elemento ocupa m cantidad de espacio en la memoria
Por lo tanto espacio total ocupado por estos elementos = m(y∗z∗p+z∗q+r)
Por lo tanto, dirección de A[p][q][r]=dirección base+ Espacio ocupado por los elementos anteriores.
=&A[0][0][0]+m(y*z*p+z*q+r)
Por lo tanto, la opción (B) es correcta.
Cuestionario de esta pregunta
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA