![]() |
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; |
Re: Frage wegen Referenz variable in selbstgeschrieben funkt
Ein var Parameter kann in der Routine verändert und wieder zurückgegeben werden.
|
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; |
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:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz