我有一个练习问题,这使我难以应付即将到来的认证考试。无论如何,请帮助你!我想我知道如何得到答案的值传递部分,但不知道这个问题的参考部分。
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)发布于 2014-06-14 04:11:20
在过程之外,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 36B将在程序内和程序返回后36岁。
发布于 2014-06-14 04:13:42
结果:
W= 6,x= 10,y= 9,z= 36
计算后a=5和b= 36
https://stackoverflow.com/questions/24216491
复制相似问题