Pascal - 按值调用子程序


将参数传递给子程序的按值调用方法将参数的实际值复制到子程序的形式参数中。在这种情况下,对函数内部参数所做的更改不会对参数产生影响。

默认情况下,Pascal 使用按值调用方法来传递参数。一般来说,这意味着子程序中的代码不能更改用于调用子程序的参数。考虑过程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
pascal_procedures.htm