Pascal - Chiamata di sottoprogramma per riferimento

Il call by referenceIl metodo per passare argomenti a un sottoprogramma copia l'indirizzo di un argomento nel parametro formale. All'interno del sottoprogramma, l'indirizzo viene utilizzato per accedere all'argomento effettivo utilizzato nella chiamata. Ciò significa che le modifiche apportate al parametro influiscono sull'argomento passato.

Per passare gli argomenti per riferimento, Pascal permette di definire variable parameters. Questo viene fatto facendo precedere i parametri formali dalla parola chiavevar. Prendiamo l'esempio della procedura swap () che scambia i valori in due variabili e riflette il cambiamento nel sottoprogramma chiamante.

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

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

Successivamente, chiamiamo la procedura swap () passandovalues by reference come nell'esempio seguente -

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.

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

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

Il che mostra che ora la procedura swap () hachanged the values in the calling program.