我有一个练习题,让我难以接受即将进行的认证测试。无论如何,请帮助你!我想我理解如何获得答案的值传递部分,但是在这个问题的传递参考部分没有IDEA。
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)
答案 0 :(得分:1)
a永远不会在程序之外更改,因为它是按值传递的,而b将被更改,因为它是通过引用传递的。通过引用传递的变量的赋值将保留在过程之外。
查看它的一种方法是用调用者变量替换引用参数,用b代替y,z。而不能代替a,因为它被价值所称。
现在,如果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。
答案 1 :(得分:0)
结果:
w = 6, x = 10, y = 9, z = 36
计算后a = 5且b = 36