Lektion 34:Call by valueWir wollen jetzt eine Funktion für den Dreieckstausch schreiben:
Der Typ der Funktion ist void. Das heißt, sie gibt keinen Wert zurück. Es fällt auf, daß die beiden Werte NICHT vertauscht wurden. Das liegt daran, daß beim Aufruf von swap nur die beiden Werte der Variablen in die entsprechenden Variablen der Funktion kopiert wurden, nicht aber irgendwelche Adressen. In der Funktion wurde dann mit den Variablen innerhalb der Funktion etwas gemacht, ohne daß das die Variablen im Hauptprogramm beeinflußt. Und beim Verlassen der Funktion werden die beiden Variablen a und b und die neue Variable tmp einfach weggeworfen. Das war nicht im Sinne des Erfinders. Dieses Verhalten, daß von einer Funktion nur die Werte übernommen werden, nennt man call by value. Call by value ist deshalb sehr schön, weil ich mich als Programmierer darauf verlassen kann, daß innerhalb einer Funktion, die ich aufrufe, meine Variablen nicht verändert werden können. Falls ich also einmal einen Fehler entdecke, bei dem eine Variable einen Wert hat, den sie nicht haben sollte, dann brauche ich nicht in allen Funktionen, die ich verwende nachzuschauen, ob da irgend etwas fehlerhaft ist, sondern nur in meinem Hauptprogramm kann der Fehler liegen. Das verkürzt die Fehlersuche ungemein. Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern. [aktuelle Version] [inhalt] [index] [Fehlerkorrektur, Verbesserungsvorschlag] © Volkard Henkel <volkard@normannia.de>, last update: 08/25/00 |