Funktionsaufruf und Parameterübergabe in Java
-
+fricky schrieb:
Tolpan schrieb:
Ich habs verstanden auch wenn mich das irgendwie schockiert.
warum? wie tfa schon schrieb, kommen die refenzen nicht wieder aus der methode hinaus. damit dein code klappt, brauchste sowas wie 'eine referenz auf eine referenz'. das könnte dann z.b. so aussehen
Die Referenzen der Methode swap werden aber auch hier nicht verändert. Was hier verändert wird, ist die von RefRef eingehüllte Objektreferenz, was natürlich möglich ist weil ich den inneren Zustand des Objektes RefRef ändern kann.
-
Amun Ra schrieb:
+fricky schrieb:
Tolpan schrieb:
Ich habs verstanden auch wenn mich das irgendwie schockiert.
warum? wie tfa schon schrieb, kommen die refenzen nicht wieder aus der methode hinaus. damit dein code klappt, brauchste sowas wie 'eine referenz auf eine referenz'. das könnte dann z.b. so aussehen
Die Referenzen der Methode swap werden aber auch hier nicht verändert. Was hier verändert wird, ist die von RefRef eingehüllte Objektreferenz, was natürlich möglich ist weil ich den inneren Zustand des Objektes RefRef ändern kann.
richtig, aber anders geht's nicht. in anderen sprachen nimmt man pointer dafür (siehe den link weiter oben).
-
+fricky schrieb:
richtig, aber anders geht's nicht. in anderen sprachen nimmt man pointer dafür (siehe den link weiter oben).
Stimmt! Deshalb liebe ich C/C++ auch so...
-
Amun Ra schrieb:
+fricky schrieb:
richtig, aber anders geht's nicht. in anderen sprachen nimmt man pointer dafür (siehe den link weiter oben).
Stimmt! Deshalb liebe ich C/C++ auch so.
ich auch
#define SWAP(a,b){void *p=a;a=b;b=p;} void main (void) { char *a = "Ich bin A"; char *b = "ich bin B"; printf ("a: %s\nb: %s\n", a,b); SWAP(a,b); printf ("a: %s\nb: %s\n", a,b); }
-
+fricky schrieb:
#define SWAP(a,b){void *p=a;a=b;b=p;}
void main (void)
{
char *a = "Ich bin A";
char *b = "ich bin B";
printf ("a: %s\nb: %s\n", a,b);
SWAP(a,b);
printf ("a: %s\nb: %s\n", a,b);
}
[/code]Keine gute Idee die Strings so zu deklarieren. Spätestens beim Zugriff gibts einen Read-Only Crash.