Call by value
优质
小牛编辑
130浏览
2023-12-01
将参数传递给子程序call by value方法将参数的实际值复制到子程序的形式参数中。 在这种情况下,对函数内部参数所做的更改不会对参数产生影响。
默认情况下,Pascal使用call by value方法来传递参数。 通常,这意味着子程序中的代码不能改变用于调用子程序的参数。 考虑过程swap()定义如下。
procedure swap(x, y: integer);
var
temp: integer;
begin
temp := x;
x:= y;
y := temp;
end;
现在,让我们通过传递实际值来调用过程swap(),如下例所示 -
program exCallbyValue;
var
a, b : integer;
(*procedure definition *)
procedure swap(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 :100
After swap, value of b :200