首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按价值和参考传递

按价值和参考传递
EN

Stack Overflow用户
提问于 2014-06-14 04:07:21
回答 2查看 64关注 0票数 0

我有一个练习问题,这使我难以应付即将到来的认证考试。无论如何,请帮助你!我想我知道如何得到答案的值传递部分,但不知道这个问题的参考部分。

代码语言:javascript
复制
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值是多少?

代码语言:javascript
复制
int a <-- 5
int b <-- 6
calc (a, a, b, b)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-14 04:11:20

在过程之外,a永远不会更改,因为它是通过值传递的,而b将被更改,因为它是通过引用传递的。通过引用传递的变量的赋值将保留在过程之外。

查看它的一种方法是通过调用变量替换引用参数,用b替换y,z,而不替换a,因为它是由值调用的。

现在,如果w,x通过引用传递值y,z,则代码将完全如下所示:a将是5,没有变化,而b将是:

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2014-06-14 04:13:42

结果:

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

计算后a=5和b= 36

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24216491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档