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