Pascal - Appel de sous-programme par référence

le call by referenceLa méthode de transmission d'arguments à un sous-programme copie l'adresse d'un argument dans le paramètre formel. À l'intérieur du sous-programme, l'adresse est utilisée pour accéder à l'argument réel utilisé dans l'appel. Cela signifie que les modifications apportées au paramètre affectent l'argument passé.

Afin de passer les arguments par référence, Pascal permet de définir variable parameters. Cela se fait en précédant les paramètres formels par le mot-clévar. Prenons l'exemple de la procédure swap () qui permute les valeurs dans deux variables et reflète le changement dans le sous-programme appelant.

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

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

Ensuite, appelons la procédure swap () en passantvalues by reference comme dans l'exemple suivant -

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.

Lorsque le code ci-dessus est compilé et exécuté, il produit le résultat suivant -

Before swap, value of a : 100
Before swap, value of b : 200
After swap, value of a : 200
After swap, value of b : 100

Ce qui montre que maintenant la procédure swap () achanged the values in the calling program.