Pointer und Reference
-
Hi,
warum übergibst du hier
pointer(&b)(also die Adresse der Variabeln) ich hätte das so gemacht:
int b = 8; int* c = &b; pointer(c);c enthält ja auch die Adresse der Variablen b. Allerdings warum hast du hier keinen Zeiger mit "int* c" angelegt?
Viele Grüße
-
Tom83 schrieb:
Hi,
warum übergibst du hier
pointer(&b)(also die Adresse der Variabeln) ich hätte das so gemacht:
int b = 8; int* c = &b; pointer(c);c enthält ja auch die Adresse der Variablen b. Allerdings warum hast du hier keinen Zeiger mit "int* c" angelegt?
Viele Grüße
Weil es nicht notwendig ist. Der Parameter (d.h. die Adresse von b) wird sowieso in den Stack-Bereich der Funktion kopiert, da ist es nicht notwendig, noch eine eigene Variable dafür anzulegen.
-
Hi,
wie schauts dann aus, wenn ich so ein Konstrukt habe:
//call by VALUE void test3 (int q) { q = 77777; cout << " BEI q steht folgendes " << q << endl; } int s =99; int *r = &s; test3(*r); cout << "Der Wert von *r :" << *r << endl; cout << "Der wert von s: " << s << endl;Nennt man das dass call by Value, oder hat das einen anderen Namen, weil ich einen derefferenzierten Zeiger übergebe?
Viele Grüße
-
Das ist call by value, weil die Funktion einen Wert übergeben bekommt. Woher dieser Wert stammt, ist für den Aufruftyp unerheblich.
Rein technisch gesehen ist auch die Zeiger-Variante "call by value" (allerdings mit einem "int*" Wert), semantisch wurde sie in C verwendet, um "call by reference" Semantik nachzubilden.
-
Hi!
Danke!
Ich hab mich jetzt mal an das Thema Zeiger auf Zeiger rangewagt:
int s =99; int *r = &s; int **zeigeraufzeiger; int ***zeigeraufzeigeraufzeiger; zeigeraufzeiger = &r; zeigeraufzeigeraufzeiger = &zeigeraufzeiger; cout << "Adresse von s (&s) " << &s <<endl; cout << "Wert des Zeigers r (r) " << r << endl; cout << "Adresse des Zeiger r (&r) " << &r << endl; cout << "Wert des zeigeraufzeiger (z...) " << zeigeraufzeiger << endl; cout << "Adresse des zeigersaufzeiger (&z...) " << &zeigeraufzeiger << endl; cout << "Wert des zeigeraufzeigeraufzeiger (z...) " << zeigeraufzeigeraufzeiger << endl; cout << "Adresse des zeigeraufzeigeraufzeiger (&z...) " << &zeigeraufzeigeraufzeiger << endl <<endl << endl; cout << "Wert von s " << s << endl; cout << "Wert des Zeigers r (*r) " << *r << endl; cout << "zeigeraufzeiger (z...) " << zeigeraufzeiger << endl; cout << "Wert des Zeigers zeigeraufzeiger (*zei...) (wert von r) " <<*zeigeraufzeiger << endl; cout << "Wert des Zeigers zeigeraufzeiger (**zei...) (wert von s) " << **zeigeraufzeiger << endl <<endl; cout << "zeigeraufzeiger (z...) " << zeigeraufzeigeraufzeiger << endl; cout << "Wert Zeiger zeigeraufzeigeraufzeiger (*z...)(wert von zeigeraufzeiger) " << *zeigeraufzeigeraufzeiger << endl; cout << "Wert des Zeigers zeigeraufzeigeraufzeiger (**z...) (Wert von r) " << **zeigeraufzeigeraufzeiger << endl; cout << "Wert des Zeigers zeigeraufzeigeraufzeiger (***z..) (Wert von s) " << ***zeigeraufzeigeraufzeiger << endl;Stimmen meine Angaben so?
Viele Grüße
-
Nicht ganz.
Zeile 18: Ziel des Zeigers
Zeile 22: Ziel des Zeigers
Zeile 23: Ziel des Zieles des ZeigersZeile 27: Ziel des Zeigers
Zeile 28: Ziel des Zieles des Zeigers
Zeile 29: Ziel des Zieles des Zieles des Zeigers