Рубрики

ВОРОТА | GATE-CS-2016 (набор 2) | Вопрос 22

Значение, напечатанное следующей программой:

void f(int* p, int m)

{

    m = m + 5;

    *p = *p + m;

    return;

}

void main()

{

    int i=5, j=10;

    f(&i, j);

    printf("%d", i+j);

}

(А) 10
(Б) 20
(С) 30
(D) 40

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

#include"stdio.h"

void f(int* p, int m)
{
    m = m + 5;
    *p = *p + m;
    return;
}
int main()
{
    int i=5, j=10;
    f(&i, j);
    printf("%d", i+j);
}

Для меня адрес передан. Для j значение передается. Таким образом, в функции f, p будет содержать адрес i, а m будет содержать значение 10. Первый оператор f () изменит m на 15. Затем 15 будет добавлено к значению по адресу p. Это сделает i = 5 + 15 = 20. j останется 10. print заявление напечатает 20 + 10 = 30. Таким образом, ответ — C.
Тест на этот вопрос

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

ВОРОТА | GATE-CS-2016 (набор 2) | Вопрос 22

0.00 (0%) 0 votes