005
07.12.2006, 11:35 Uhr
ao
(Operator)
|
Zitat von Windalf: |
Zitat: |
Denn der Zeiger ändert sich ja (wahrscheinlich) beim new.
|
Nein der Grund ist, das die Prozedur intern nicht mit dem übergebenen Zeiger arbeitet, sondern mit einer Kopie.
|
Ich glaube, ihr meint dasselbe. Der Fehler ist, dass der Zeiger by-value übergeben wurde -> lokale Kopie. Eine Übergabe by-reference wäre richtig, dann hätte die Änderung Wirkung nach außen.
Dabei fällt mir ein, wie wärs hiermit? Hab ich noch nie benutzt, müsste aber doch auch gehen, oder?
C++: |
void func(double*& m) // <--- Referenz auf Pointer { m = new double(4.0); cout << m << "\n"; }
int main (void) { double* n = NULL; func(n); cout << *n << "\n"; return 0; }
|
ao Dieser Post wurde am 07.12.2006 um 11:36 Uhr von ao editiert. |