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