Prueba C – 102 | Pregunta 5

En el contexto del fragmento de programa a continuación, elija la mejor respuesta.

#include "stdio.h"
int arr[10][10][10];
int main()
{
 arr[5][5][5] = 123;
 return 0;
}

¿Cuál de las sentencias printf dadas podría imprimir arr[5][5][5]

(i) printf("%d",arr[5][5][5]);
(ii) printf("%d",*(*(*(arr+5)+5)+5));
(iii) printf("%d",(*(*(arr+5)+5))[5]);
(iv) printf("%d",*((*(arr+5))[5]+5));

(A) solo (i) compilaría e imprimiría 123.
(B) tanto (i) como (ii) compilarían y ambos imprimirían 123.
(C) solo (i), (ii) y (iii) compilarían pero solo (i) y (ii) imprimirían 123.
(D) solo (i), (ii) y (iii) compilarían y los tres imprimirían 123.
(E) todos (i), (ii), (iii) ) y (iv) compilarían pero solo (i) y (ii) imprimirían 123.
todos (i), (ii), (iii) y (iv) compilarían y todos imprimirían 123.

Respuesta:
Explicación:Para arrays, podemos convertir el operador de subíndice de array [] en operador de deferencia de puntero * con el desplazamiento adecuado. Significa que arr[x] es igual a *(arr+x). Básicamente, estos dos son intercambiables. El mismo concepto también se puede aplicar en arrays multidimensionales.

Es por eso que todos los 4 printf anteriores se refieren al mismo elemento, es decir,  arr[5][5][5]
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 *