Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, kann mir bitte jemand behilflich sein ? habe folgendes problem.

habe folgende datenstruktur:

struct datensatz

{

char name[15];

char v_name[15];

char strasse[15];

int hausnr;

int gebdat;

char telnr[15];

};

HP:

void main()

{

datensatz dat1;

eingabe(dat1);

cout<<dat1.name; //z.B.

}

UP:

datensatz eingabe(datensatz dat1)

{

cout<<"\nName: ";

cin>>dat1.name;

cout<<"\nVorname: ";

cin>>dat1.v_name;

cout<<"\nStrasse: ";

cin>>dat1.strasse;

cout<<"\nHausnummer: ";

cin>>dat1.hausnr;

cout<<"\nGeburtsdatum: ";

cin>>dat1.gebdat;

cout<<"\nTelefonnummer: ";

cin>>dat1.telnr;

}

Nun, wie kann ich die Daten vom UP nun ans HP übergeben ?

Sollte das eigentlich mit Pointer/Zeigern machen. Habe jedoch leider noch nicht so den Plan von dem ganzen.

Wo finde ich gute Beispiele zu dem Thema ?

plz help ! :confused:

Geschrieben

ich würde zuerst ma das unterprogramm vor das hauptprogramm klattschen un dann würde ich nicht 2* dat1 verwenden...das objekt in der klammer würde ich dann peter nennen...auf jeden fall net dat1! hast du schon mal versucht mit einem rückgabewert zu schaffen...das heißt, dass du deine funktion eingabe in void eingabe taufst und zum schluß dann return dat1 oder so zurückgigst...kann aber auch ziemlich falsch sein!

un ab!

Schnitzel ist ziemlich verschärft!

Geschrieben

Schreib einfach

void main()

{

datensatz dat1;

eingabe(&dat1);

cout<<dat1.name; //z.B.

}

UP:

bool eingabe(datensatz& dat1)

und gib zum Schluß ein "return true;" zurück, wenn alles glattging.

Das ist nämlich im Grunde genommen dasselbe als wie wenn Du einen Pointer verwenden würdest. Bei Deinem Alten UP wird eine Kopie von dat1 übergeben. Diese Kopie existiert nur innerhalb vom Namensbereich von UP. Nach dem Return wäre alles deshalb weg. Durch die Referenzierung wird die Adresse auf die Daten vom dat1 im Main() weitergegeben. Jede Veränderung auf diese Referenz verändert das dat1 von Main(). Außerdem kann das anlegen von Kopien die Laufzeit extrem verlängern, beziehungsweise bei rekursiven Funktionen kann plötzlich einfach der Stack überlaufen wenn er nicht groß genug ist. Ist vielleicht gut zu wissen, aber jetzt schau Dir unbedingt mal Referenzen und Pointer genauer an, denn ohne die kann man nicht viel anstellen.

Zum Schluß noch kurz die Pointer-Version:

void main()

{

datensatz dat1;

datensatz*p_dat1=&dat1;

eingabe(p_dat1); oder eingabe(&dat1); dann ist der p_dat1 aber überflüssig

cout<<dat1.name; //z.B.

}

UP:

bool eingabe(datensatz* dat1)

{

cout<<"\nName: ";

cin>>dat1->name;

cout<<"\nVorname: ";

cin>>dat1->v_name;

usw.

<FONT COLOR="#a62a2a" SIZE="1">[ 21. August 2001 00:00: Beitrag 1 mal editiert, zuletzt von Crush ]</font>

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...