作者xicktod (头德)
看板Grad-ProbAsk
标题[问题] 资料结构 变数传递
时间Fri Mar 27 19:37:26 2009
请问一下有关变数传递的问题
以下程式
Program Test()
begin
a=4;
b=7;
Call Subroutine (a+b,a,a)
Print a ;
end
Subroutine (x,y,z)
begin
y=y+10;
z=x+z;
end
以下有4种传递方式
1) Call-by-value
2) Call-by-address
3) Call-by-name
4) Call-by-value-result
问分别的执行结果??
Ans 1) 4
2) 25
3) 35
4) 14 or 15
有板上的大大可以解释一下吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.166.75.150
1F:推 s987692:Call-by-value 函数并不会影响原来a变数的值 所以为四 03/27 20:02
2F:→ s987692:Call-by-address 会把变数位址传给subroutine 03/27 20:03
3F:→ s987692:我也想问三四 .不知道是什麽意思?? 03/27 20:04
4F:→ depend:call by name就是把副程式的x,y,z用a+b,a,a带回去 03/27 21:36
5F:→ depend:然後把a,b的值带回去就可以得到a的值了~ 03/27 21:36
6F:→ depend:4)是用call by value的方法,但最後要把x,y,z的值传回去 03/27 21:38
7F:→ depend:如果先传y在传z,会得到a=15,如果先传z再传y,会得到a=14 03/27 21:39
8F:→ xicktod:不好意思 我想问一下第二题25是怎麽求的? 03/27 22:37
9F:推 s987692:你想 subroutine 的y z变数位址都是a变数的位址~~ 03/27 23:26