Considere el programa C dado a continuación.
#include<stdio.h> #include<string.h> int main() { char *s1[]={"Dubai","Singapore","Paris","Sanghai","HongKong"}; char **s2[]={(s1+2),(s1+1),(s1+3),(s1+4),(s1+0)}; char ***s3=s2; char str1[]="I love to visit "; char str2[]="times every year."; s3++; printf("%s",str1); printf("%s ",**++s3); printf("%d-%d ",s3-s2,*s3-s1); printf("%s",str2); return 0; }
¿Cuál de las siguientes strings es/son parte de la salida del programa C anterior?
Nota: esta pregunta es de selección múltiple (MSQ).
(A) Dubái
(B) Sanghai
(C) 2-3
(D) 3-4
Respuesta: (B) (C)
Explicación: Sea
Dirección base s1=1000
Dirección base s2=2000
La array de punteros s1 contiene las direcciones base de los instrumentos de cuerda.
s2=1000 array de doble puntero contiene las direcciones de la array de punteros s1.
El puntero triple s3=2000 contiene la dirección base de la array de direcciones s2.
s3++ significa incremento al siguiente valor de índice en 4, lo que significa 2000 + 4 = 2004
En la primera instrucción impresa
**++ s3 nuevamente s3 incrementado a 2008.
En 2008 (s2) contiene a s1+3 y (s1+3) apunta a “ sanghai”.
En la segunda declaración impresa
s3-s2 = 2008 - 2000 / 4(size of the data type) = 2 *s3 - s1= 1012-1000/4 = 3
Entonces, el resultado del programa C dado es: Me encanta visitar Sanghai 2-3 veces al año.
Por lo tanto, ‘Sanghai’ y ‘2-3’ son strings que forman parte de la salida.
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