CGU-RED | UGC NET CS 2015 Dic – II | Pregunta 16

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *