Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Pointer und Array in Funktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
23.04.2008, 15:39 Uhr
~Caty
Gast


Hallo,

ich dachte eigentlich ich habs verstanden, aber irgendwie klappt das nicht. ;-)

Hab eigentlich ein ganz einfaches Problem. Ich leg nen Ptr an und übergeb den an eine Funktion. Die soll mir ein dynamisches Feld drunter legen.

Hier der Code:

C++:
void test(int *feld) {
    feld = (int*)malloc(sizeof(int));
    feld[0] = 1;
}

int main()
{
    int *feld;
    test(feld);
return 0;
}



Nach dem Aufruf von test(feld) hat der Ptr feld immer noch den Wert "undefined value". Genauso wie zuvor. Wo hab ich da jetzt das Sternchen vergessen? ;-)

Danke für die Hilfe,
MFG
Caty
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
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<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.04.2008, 16:40 Uhr
~Caty
Gast



Zitat von Kest:

In C ließe sich das mithilfe eines Zeiger-Zeigers lösen:



Ach stimmt...genau das meinte ich.

Danke für den Tipp. Hat geklappt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: