Considere el siguiente programa en C:
#include <stdio.h> typedef struct { char *a; char *b; } t; void f1(t s); void f2(t *p); main() { static t s = {"A", "B"}; printf ("%s %s\n", s.a, s.b); f1(s); printf ("%s %s\n", s.a, s.b); f2(&s); } void f1(t s) { s.a = "U"; s.b = "V"; printf ("%s %s\n", s.a, s.b); return; } void f2(t *p) { p -> a = "V"; p -> b = "W"; printf("%s %s\n", p -> a, p -> b); return; }
¿Cuál es la salida generada por el programa?
(A) AB
UV
VW
VW
(B) AB
UV
AB
VW
(C) AB
UV
UV
VW
(D) AB
UV
VW
UV
Respuesta: (B)
Explicación:
El valor de la estructura s se pasa por valor en f1(). En f2(), se pasa la dirección de s. Por lo tanto, los cambios realizados en f1() no se reflejan en main() , pero los cambios realizados en f2() se reflejan.
Por lo tanto, la respuesta es B Consulte la solución de código en: https://ide.geeksforgeeks.org/q36urV
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