Передать по значению и справке

У меня есть практический вопрос, который поставил меня в тупик для предстоящего сертификационного теста. Пожалуйста, помогите в любом случае, что вы можете! Я думаю, что понимаю, как получить ответную часть ответа по значению, но НЕТ ИДЕИ в ответной части этого вопроса.

procedure calc ( pass-by-value int w,
                 pass-by-value int x,
                 pass-by-reference int y,
                 pass-by-reference z)

    w <-- w + 1
    x <-- x * 2
    y <-- y + 3
    z <-- z * 4

end procedure

Каковы значения a и b в конце фрагмента кода ниже?

int a <-- 5
int b <-- 6
calc (a, a, b, b)

2 ответа

Решение

Значение a никогда не изменяется вне процедуры, потому что оно передается по значению, а b будет изменено, потому что оно передается по ссылке. Присвоение переменным, переданным по ссылке, останется вне процедуры.

Один из способов взглянуть на это - заменить ссылочные аргументы на переменную вызывающего, заменив y,z на b. в то время как не может заменить, потому что он вызывается по значению.

теперь ваш код будет выглядеть точно так, если w, x передается по значению y,z по ссылке: a будет 5 без изменений, а b будет:

int a <-- 5
int b <-- 6
w <-- a + 1
x <-- a * 2
b <-- b + 3   => b will be 9 
b <-- b * 4   => b will be 36

b будет 36 внутри процедуры и после возврата процедуры.

Результаты:

w = 6, x = 10, y = 9, z = 36

После расчетов а = 5 и б = 36

Другие вопросы по тегам