Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » pointer auf lokalen speicherbereich "returnen"

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.10.2003, 23:13 Uhr
kronos
Quotenfisch
(Operator)


hi!
ich hab' mal eine ziemliche anfänger-frage, aber ich komm' echt nicht weiter.
also, eine funktion soll ein struct zurückgeben, das unter anderem pointer auf weiter structs enthält, welche innerhalb diese funktion erstellt werden. allerdings sind diese ja dann lokal und wenn ich pech habe werden sie nachdem die funktion verlassen wurde überschrieben, oder? was kann ich dagegen unternehmen?
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
23.10.2003, 23:25 Uhr
kronos
Quotenfisch
(Operator)


hier mal verschanschaulicht:

C++:

struct cords { int x,y; }
struct Struktur {struct cords *cordarray}

Stuktur funktion()
{
struct Struktur my_struct;
struct cords cordarray[variabel];
//
// irgendwelche koordinaten eintragen ...
//

my_struct.cordarray=cordarray; // so, jetzt hab' ich den array im struct
return my_struct;
// leider verfällt nun der speicherbereich für die koordinaten,
// da ja im grunde nur ein pointer darauf (cordarray) übergeben wird
// dafür bräuchte ich eine lösung...
}

main()
{
Struktur my_struct=funktion();
Struktur.cordarray[0].x= // hier kann jetzt alles mögliche rauskommen
}



--edit: Pablo. tsts. [ /cpp ] tag vergessen --
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>

Dieser Post wurde am 23.10.2003 um 23:30 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
23.10.2003, 23:40 Uhr
Pablo
Supertux
(Operator)


Was ich an deiner Stelle machen würde ist in die Funktion ein Pointer auf deine Struktur zu übergeben, so:

C++:
Struktur* funktion(Struktur* str, coords* cords)
{
    //Überprüfe ob NULL übergeben wurde
   if (str==NULL || cords==NULL) return NULL;
   // in cords Koordenaten eintragen.
   str->cordarray =  cords;
   return str;
}

int main()
{
    Struktur* my_struct;
    cords* my_cords;

    // initialisieren
    my_struct = new Struktur;
    my_cords = new cords[20];

    my_struct = function(my_struct, my_cords);
    my_struct->cordarray[0]=////

   delete [] my_cords;
   delete my_struct;
  
   return 0;
}


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 23.10.2003 um 23:42 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
24.10.2003, 07:10 Uhr
virtual
Sexiest Bit alive
(Operator)


Bitte FAQ lesen .
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
24.10.2003, 16:03 Uhr
kronos
Quotenfisch
(Operator)


pablo, so hätt' ich's eigentlich gemacht, leider ist die größe des arrays variabel und muss in der funktion initialisiert werden. werd's also wie im FAQ mit static machen. da hätte ich auch selbst drauf kommen können, thx.
--
main($)??<-$<='?'>>2?main($-!!putchar(
(("$;99M?GD??(??/x0d??/a:???;a"+'?'/4)
??($??)+'?'/3-2-1+$%2)??''?')):'?';??>
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
24.10.2003, 18:01 Uhr
Pablo
Supertux
(Operator)


Das spielt keine Rolle, dann mit new kannst du sowieso den Speicher für unbekannten Längen erstellen.
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
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: