procedure p(x : integer);
begin
a := 5;
x := x + 2;
end
在执行以下代码后记下变量a的值:
a := 10;
p(a);
对于以下每个参数传递机制:
(i)按价值呼叫。一个。 7,10
(ii)以参考方式致电。一个。 12,12
(iii)按价值结果打电话。一个。 7,7
下周接受了考试,我得到了模拟论文的答案,但我很困惑如何在程序调用中将X分配给a。帮助会很棒
感谢
答案 0 :(得分:1)
(i)按值调用
无论传递给p()的值是什么,都将复制到p()的堆栈上。 copy 用于p()的主体,因此原始值永远不会改变。如果a
以7开头,它将以7结尾。
(ii)以参考方式致电
对p()提供对原始值的引用,以便更改引用指向影响原始变量的值。在p()返回后,a
将有一个新值。
如果a
从12开始,它将以7结尾,因为它首先在p()的主体中赋值为5,然后该值增加2。
(iii)按价值结果调用
这类似于通过引用调用,除了在形式参数和实际参数之间没有创建别名。 See details