PUERTA | GATE-IT-2004 | Pregunta 61

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

Deja una respuesta

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