目录

引用传递(Call by reference)

将参数传递给子程序call by reference方法将参数的地址复制到形式参数中。 在子程序内,该地址用于访问调用中使用的实际参数。 这意味着对参数所做的更改会影响传递的参数。

为了通过引用传递参数,Pascal允许定义variable parameters 。 这是通过在关键字var之前的形式参数之前完成的。 让我们以过程swap()为例,它将两个变量中的值交换并反映调用子程序中的变化。

procedure swap(var x, y: integer);
var
   temp: integer;
begin
   temp := x;
   x:= y;
   y := temp;
end;

接下来,让我们values by reference传递values by reference调用过程swap() ,如下例所示 -

program exCallbyRef;
var
   a, b : integer;
(*procedure definition *)
procedure swap(var x, y: integer);
var
   temp: integer;
begin
   temp := x;
   x:= y;
   y := temp;
end;
begin
   a := 100;
   b := 200;
   writeln('Before swap, value of a : ', a );
   writeln('Before swap, value of b : ', b );
   (* calling the procedure swap  by value   *)
   swap(a, b);
   writeln('After swap, value of a : ', a );
   writeln('After swap, value of b : ', b );
end.

编译并执行上述代码时,会产生以下结果 -

Before swap, value of a : 100
Before swap, value of b : 200
After swap, value of a : 200
After swap, value of b : 100

这表明现在程序swap()已经changed the values in the calling program

↑回到顶部↑
WIKI教程 @2018