Si consideri il seguente frammento di codice:
Var a: Integer; b: Integer; Procedure foo(var a: Integer; b: Integer); Var temp: Integer; Begin temp:=a; a :=b; b :=temp; End; Begin a:=1; b:=5; foo(a, b); End.
Quanto valgono le variabili a e b alla fine dell’esecuzione?
Soluzione: a=5 e b=5.
Soluzione
La variabile b viene passata alla procedura foo() per valore (quindi non viene alterata) mentre la variabile a per indirizzo (quindi viene alterata).
Siccome foo() scambia tra loro i valori di a e di b, quindi fa assumere ad a il valore 5, il risultato finale è appunto 5 e 5.