Struct; Ausgabe mit Funktion



  • Also aufrufen würde ich sie folgendermaßen:

    Bsp.:

    {
    
    person_t temp;
    
    printPerson(temp);
    
    }
    

    Aber wahrscheinlich ist das falsch?

    ich weiß einfach nicht, welchen Wert ich der Funktion mitgeben soll..



  • Igl schrieb:

    Also aufrufen würde ich sie folgendermaßen:

    Bsp.:

    {
    
    person_t temp;
    
    printPerson(temp);
        
    }
    

    Welchen Namen/Vornamen hat denn diese Person?



  • Ich stelle meine Frage mal explizit:

    Welchen Wert muss ich der Funktion denn mitgeben, damit sie so funktioniert wie ich das gerne hätte?

    Wenn mir das jemand sagen könnte, wäre ich sehr froh.



  • Zwischen der Definition der Variablen temp und dem Aufruf von printPerson passiert nichts.
    Was soll die Funktion also ausgeben?

    Meinst du, der Compiler schreibt automatisch bei Vornamen "Max" und bei Name "Mustermann" rein?



  • Natürlich glaube ich das nicht.
    Die Funktion gibt die Werte aus, die in dem struct stehen.
    Daher brauch sie natürlich auch eine Variable, durch die sie darauf zugreifen kann.
    Aber ich weiß halt leider nicht welche das sein soll...
    Deshalb frage ich ja. 😕



  • In uninitialisierten Variablen steht nur Müll. Bei der Ausgabe wirst du also nur Müll sehen (es sei denn das Programm stürzt bei der Ausgabe schon ab).



  • temp ist die Variable vom Typ person_t
    Das ist eine struct mit zwei Member vorname und name.

    Entweder du kopierst die mit strcpy rein. (so ähnlich wie in insertPerson)

    Oder du machst gleich eine Initialisierung. (Eine Wertezuweisung bei der Definition)

    Dein Problem sind die (fehlenden) Grundlagen der Programmierung (allgemein, nicht speziell C)



  • Hmm, okay.

    Also muss ich temp vorher einen passenden Wert zuordnen, indem ich z.B. mithilfe von strcpy() einfach den jeweiligen Namen zuordne.



  • In Ordnung, ich habe es jetzt folgendermaßen gemacht:

    person_t q,s;
    
        strcpy(q.vorname, "Manfred");
        strcpy(q.name, "Mustermann");
        strcpy(s.vorname, "Melanie");
        strcpy(s.name, "Musterfrau");
    
        printPerson(q);
        printPerson(s);
    

    Die namen werden mir auch ausgegeben.
    Alles schön und gut.

    Jetzt frage mich mich jedoch, wie ich mit

    void printPersList(PersListElement *p)
    

    darauf zugreifen soll?

    Bzw. mit:

    void printReversePersList(PersListElement *p)
    

    Außer natürlich oben angegebenes einfach rein zu schreiben..



  • typedef struct {
      char name[30];
      char vorname[30];
    } person_t;
    
    typedef struct perslistelement {
      person_t pers_obj;
      struct perslistelement *next;
    } PersListElement;
    

    PersListElement ist ein Typ für eine struct . Dieser Typ enthält als Member mit dem Namen pers_obj die struct person_t.

    Wenn du eine Variable q vom Typ PersListElement Element hast, dann kannst du darauf mit q.pers_obj zugreifen.

    Bei dir ist p aber ein Zeiger auf die struct. Darum https://www.c-plusplus.net/forum/p2457066#2457066
    (name willst du hier aber nicht haben, das soll ja printPerson machen)



  • Ja, okay.
    Das habe ich ja gewusst. ^^
    Nur klärt das meine Frage nicht, wie ich denn damit auf die Funktion PrintPerson zugreifen soll?
    Das ist das einzige, das ich hier nicht verstehe...



  • Igl schrieb:

    Nur klärt das meine Frage nicht, wie ich denn damit auf die Funktion PrintPerson zugreifen soll?

    Doch, das tut es.

    Igl schrieb:

    Das ist das einzige, das ich hier nicht verstehe...

    Das ist maßlos untertrieben.

    Das passt nicht zu

    Igl schrieb:

    Ja, okay.
    Das habe ich ja gewusst. ^^

    Und aus dem anderen Thread:

    Igl schrieb:

    Achso. 😃

    Ja gut, da hat es gerade "klick" gemacht.

    Du musst von der struct perslistelement, auf die p zeigt, den Member pers_obj an PrintPerson übergeben.

    Jetzt nimm dein Wissen und dein Klick und mach Klack daraus.


Anmelden zum Antworten