Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Frage wegen Referenz variable in selbstgeschrieben funktione (https://www.delphipraxis.net/11288-frage-wegen-referenz-variable-selbstgeschrieben-funktione.html)

Seikilos 3. Nov 2003 16:30


Frage wegen Referenz variable in selbstgeschrieben funktione
 
An sich weiß ich es, hoff ich, aber ich will das noch mal geklärt haben.

Wo ist der unterschied bei den folgenden funktionen

Delphi-Quellcode:
function func1(VAR i:integer):integer;

und

function func1(i:integer):integer;

Luckie 3. Nov 2003 16:36

Re: Frage wegen Referenz variable in selbstgeschrieben funkt
 
Ein var Parameter kann in der Routine verändert und wieder zurückgegeben werden.

Chewie 3. Nov 2003 16:36

Re: Frage wegen Referenz variable in selbstgeschrieben funkt
 
Wenn du var benutzst und die Variable in der Funktion geändert wird, wird die auch außerhalb der Funktion geändert.
Folgendermaßen:
Delphi-Quellcode:
procedure Proc1(i: Integer);
begin
  i := 5;
end;

var
  i: Integer;
begin
  i := 4;
  Proc(i);
  ShowMessage(InttoStr(i)); //Preisfrage: kommt hier 4 oder 5?
end;

Luckie 3. Nov 2003 16:38

Re: Frage wegen Referenz variable in selbstgeschrieben funkt
 
Oder anders: Es wird nicht eien Kopie der Variable übergeben, sondern dessen Adresse im Speicher. In der Routine wird dann der Wert an dieser Adresse geändert, weshalb sich auch der Wert in der aufrufenden Routine ändert. Man spricht dabei entweder von "call by value" (eine Kopie des Wertes übergeben) oder "call by reference" (eine Referenz auf die Adresse übergeben).
Und was sagt Niklaus Wirth dazu:
Zitat:

Niklaus Wirth, der Schöpfer von Pascal, wurde einmal gefragt, wie man seinen Namen ausspreche. You can either call me by name, pronouncing it 'Veert', or call me by value, 'worth', antwortete er.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz