PeinlichePeinliche Pointerfrage
-
Hallo
Ich versteh die Welt nicht mehr... Kann ich keinen Pointer als Argument übergeben
void test(int* Pointer) { int* x=new int; *x=5; Pointer=x; } int main() { int* PointerInMain; test2(PointerInMain); cout << *PointerInMain; }
Wenn ich das Ausführe kommt eine Speicherverletzung. Warum kann ich keinen Pointer als Parameter übergeben
Dies funktioniert ja auch...int* a=new int; int* b; *a=3; b=a; cout << *b;
Danke für die Hilfe
-
Pointer werde per Call by Value übergeben. Es wird also eine Kopie von dem Pointer übergeben. Wenn du den Pointer selber übergeben willst, dann musst du also einen Pointer auf einen Pointer übergeben.
PS: new gibt es bei ANSI C nicht.
Gruß
Entyl Sa
-
Wie kann man eine Kopie von einem Pointer übergeben
Wenn man eine Variable als Parameter übergibt ist es mir schon klar dass nur der Wert übergeben wird. Aber was wird bei einem Pointer übergeben. Nur die Zieladresse auf der der Pointer zeigt???
-
und müsste es echt in etwa so ausschauen
???
void test(int** Pointer) { int*b =new int; *b=4; *Pointer=b; } int main() { int* x; test(&x); cout << *x; }
-
TotalVerwirrter schrieb:
Wie kann man eine Kopie von einem Pointer übergeben
Wenn man eine Variable als Parameter übergibt ist es mir schon klar dass nur der Wert übergeben wird. Aber was wird bei einem Pointer übergeben. Nur die Zieladresse auf der der Pointer zeigt???Der Wert des Pointers ist die Adresse, und genau der Wert (die Adresse) wird kopiert.
TotalVerwirrter schrieb:
und müsste es echt in etwa so ausschauen
???
void test(int** Pointer) { int*b =new int; *b=4; *Pointer=b; } int main() { int* x; test(&x); cout << *x; }
Genau