Pascal - 按引用進行子程呼叫



按引用呼叫方法將一個引數的地址複製到形式引數中以傳遞給子程。在子程中,該地址用於訪問呼叫中使用的實際引數。這意味著對該引數所做的更改將影響傳遞的引數。

為了按引用傳遞引數,Pascal 允許定義可變引數。這可以透過在形式引數前加上關鍵字 var 來完成。讓我們以過程 swap() 為例,該過程交換兩個變數中的值並在呼叫子程中反映出此更改。

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

begin
   temp := x;
   x:= y;
   y := temp;
end;

接下來,讓我們按以下示例中所示按引用傳遞值來呼叫過程 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() 已經更改了呼叫程式中的值

pascal_procedures.htm
© . All rights reserved.