通过价值和&参考

时间:2014-06-14 04:07:21

标签: pass-by-reference pass-by-rvalue-reference

我有一个练习题,让我难以接受即将进行的认证测试。无论如何,请帮助你!我想我理解如何获得答案的值传递部分,但是在这个问题的传递参考部分没有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)

2 个答案:

答案 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