001
23.04.2008, 16:25 Uhr
Kest
saint
|
Hi!
Ein Zeiger (int*) wird ja auch >copy by value< übergeben, wie auch alle anderen Typen. Der zeigt zwar auf die richtige Andresse, ist selbst aber nicht mehr >feld< aus >main<, sondern >feld< aus >test<, sprich lokal. Um das zu lösen, bedient man sich >copy by reference<.
In C ließe sich das mithilfe eines Zeiger-Zeigers lösen:
| C++: |
void test(int **feld) { *feld = (int*)malloc(sizeof(int)); (*feld)[0] = 1; }
int main() { int *feld; test(&feld); return 0; }
|
In C++ helfen Referenzen:
| C++: |
void test(int*& feld) { feld = (int*)malloc(sizeof(int)); feld[0] = 1; }
int main() { int *feld; test(feld); return 0; }
|
-- Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<. |