传递值/参考/结果

时间:2015-05-19 23:21:59

标签: pascal

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。帮助会很棒

感谢

1 个答案:

答案 0 :(得分:1)

  

(i)按值调用

无论传递给p()的值是什么,都将复制到p()的堆栈上。 copy 用于p()的主体,因此原始值永远不会改变。如果a以7开头,它将以7结尾。

  

(ii)以参考方式致电

对p()提供对原始值的引用,以便更改引用指向影响原始变量的值。在p()返回后,a将有一个新值。

如果a从12开始,它将以7结尾,因为它首先在p()的主体中赋值为5,然后该值增加2。

  

(iii)按价值结果调用

这类似于通过引用调用,除了在形式参数和实际参数之间没有创建别名。 See details