Zitat:
Zitat von mrburns
mit der Funktion change_i wird nicht die Speicheradresse von i übergeben,
das hat zur Folge, dass der Werteumtausch in der Funktion nur temporär (nur innerhalb der Funktion) ist.
|
Call by Value ist schon richtig^^
Allerdings wird die Speicheraddresse übergeben, sonst könnt er ja nich auf i zugreifen Oo
Und das ganze Array wird nich kopiert
Was passiert ist folgendes:
Beim Aufruf der Funktion wird change_i wird die Addresse von i1 (ich nenns jetz mal i1 und i2^^) kopiert.
Deshalb wären auch alle (!)Änderungen an i1(!) in der Funktion permanent.
Der Witz ist, dass die Kopie der Speicheraddresse ja geändert werden kann (was beim i = j passiert).
Allerdings ändert das ja wie gesagt nur die Kopie der Addresse und hat garkeine Auswirkung auf das Array an sich.
Bei einfachen Zuweisungen von Arrays werden diese nicht Kopiert sondern einfach nur die Referenzen auf die neue Umgebogen. Und "umgebogen" wird halt nur die Kopie.. deshalb ist die Ausgabe 1 =)