Pascal-call-by-reference

提供:Dev Guides
移動先:案内検索

パスカル-参照によるサブプログラム呼び出し

引数をサブプログラムに渡す*参照による呼び出し*メソッドは、引数のアドレスを仮パラメーターにコピーします。 サブプログラム内では、アドレスは呼び出しで使用される実際の引数にアクセスするために使用されます。 これは、パラメーターに加えられた変更が、渡された引数に影響することを意味します。

引数を参照で渡すために、Pascalでは*変数パラメーター*を定義できます。 これは、仮パラメータの前にキーワード var を付けることにより行われます。 2つの変数の値を交換し、呼び出し側のサブプログラムの変更を反映するプロシージャ_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()_が呼び出しプログラムの値を変更したことを示しています*。