Ich glaube er meint die Parameter:
function malZwei(a:integer):Integer;
function malZwei(var a:Integer):Integer;
Der Unterschied ist folgender:
bei der ersten Version wird eine Kopie des übergebenen Parameters am Stack abgelegt dh die Funktion hat ihre eigene persönliche Kopie des Parameters und kann damit anstellen was sie will ohne das die Variable (sofern es eine Variable war) die als Parameter übergeben wurde davon beeinflusst wird.
Bei der zweiten Version wird nur eine Referenz auf die Variable die als Parameter übergeben wurde auf dem Stack abgelegt. Dh. jede Änderung an der Parameter-Variable wirkt sich direkt auf die als Parameter übergebene Variable aus
probier mal folgendes:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function malZwei(a:integer):Integer; begin a:=7; malZwei:=a*2; end;
procedure button1.... var a, b: Integer begin a := 6; b := malZwei(a); label1.caption := Inttostr(b); ShowMessage(IntToStr(a)); end; |
und dann das:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| function malZwei(var a:Integer):Integer; begin a:=7 malZwei:=a*2; end;
procedurebutton1... var a,b: Integer; begin a := 6; b := malZwei(a); label1.Caption := IntToStr(b); ShowMessage(IntToStr(a)); end; |
Du wirst sehen, der Wert der Variable ist unterschiedlich!