Einzelnen Beitrag anzeigen
Ungelesen 13.07.11, 15:38   #6
kalliknuddel
Anfänger
 
Registriert seit: Feb 2009
Ort: Berlin
Beiträge: 35
Bedankt: 18
kalliknuddel ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von mrburns Beitrag anzeigen
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 =)
kalliknuddel ist offline   Mit Zitat antworten