Pascal-call-by-value

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

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

引数をサブプログラムに渡す*値による呼び出し*メソッドは、引数の実際の値をサブプログラムの仮パラメータにコピーします。 この場合、関数内のパラメーターを変更しても、引数には影響しません。

デフォルトでは、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