Verständnisproblem



  • Hallo zusammen,

    ich habe hier ein Verständnisproblem. In Wikibooks habe ich auch nicht wirklich etwas darüber gefunden bzw. schon eingies darüber aber es bringt mri das Verständnis nicht näher.

    #include <stdio.h>
    struct student
    {
    char vorname[30];
    char name[30];
    int punkte;
    };
    void ausgabe(struct student *zeiger)
    {
    zeiger->vorname[2]='i';
    printf("\n %s %s ",zeiger->vorname,zeiger->name);
    printf(" hat %d Punkte",zeiger->punkte);
    }
    main()
    {
    struct student daten = {"Egon","Mustermann",55};
    daten.punkte=72;
    daten.vorname[1]='r';
    ausgabe(&daten);
    }
    

    Hier wird doch an die Funktion "ausgabe" eine "Call by Refence" übergeben, das ist mri wohl klar, allerdings:

    zeiger->vorname[2]='i';

    wieso ist da ei Pfeil drin und nicht ein Punkt? Wofür ist dan nder Punkt-Operator gut? Darf ich den Pfeil-Operator nur in Funktionen nutzen? Diesen müsste ich doch auch im main nutzen können wenn ich per Zeiger auf eine Struktur zugriefen will oderß

    Gruß juniorcrew



  • juniorcrew schrieb:

    allerdings:
    zeiger->vorname[2]='i';
    wieso ist da ei Pfeil drin und nicht ein Punkt?

    weil 'zeiger' ein zeiger ist. du machst 'nen indirekten zugriff auf die struct, daher ->
    eine andere schreibweise wäre: *(zeiger).vorname[2] = ...; da wird zuerst der pointer dereferenziert und dann kannste natürlich den punkt verwenden, um die struct-members anzusprechen.
    🙂


Anmelden zum Antworten