Рубрики

ВОРОТА | GATE-IT-2004 | Вопрос 61

Рассмотрим следующую 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;

}

Какой вывод генерирует программа?
(A) AB
ультрафиолетовый
VW
VW
(B) AB
ультрафиолетовый
AB
VW
(С) AB
ультрафиолетовый
ультрафиолетовый
VW
(D) AB
ультрафиолетовый
VW
ультрафиолетовый

Ответ: (Б)
Объяснение:

Значение структуры s передается значением в f1 (). В f2 () адрес s передается. Поэтому любые изменения, сделанные в f1 (), не отражаются в main (), а изменения, сделанные в f2 (), отражают.

Рекомендуемые посты:

ВОРОТА | GATE-IT-2004 | Вопрос 61

0.00 (0%) 0 votes