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>

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

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...