引用传递(Call by reference)
优质
小牛编辑
126浏览
2023-12-01
将参数传递给子程序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 。