Zugriff auf Zeiger innerhalb Struktur



  • Sehr geehrte Damen und Herren!

    Wie kann ich auf den int-Wert innerhalb der Struktur zugreifen?
    Habe schon vieles probiert. Wenn der int innerhalb der Struktur
    kein Zeiger ist, funktioniert es.

    Vielen Dank für die Hilfe - fotofoto

    #include<stdio.h>
    #include<stdlib.h>
    
    struct Datenfeld {
        int *plz;
    };
    
    int main() {
        struct Datenfeld person;
    
        int plz_zwei = 0;
    
        // PLZ einlesen als int - funktioniert
        person.plz = (int*)malloc( sizeof(int) );
        printf("\n\nEingabe PLZ: ");
        scanf("%d", &person.plz);
        printf("PLZ ist: %d", person.plz);
    
        // PLZ in neue Variable kopieren und ausgeben
    // wie muss ich auf plz innerhalb der Struktur zugreifen????????????
        plz_zwei = person.plz;
        printf("\n\nplz_zwei ist: %d", plz_zwei);
    
        printf("\n\n");
        system("pause");
    }
    


  • int main()
    {
      person.plz = malloc(8*sizeof(int));
      scanf("%d", &person.plz[7]);
      printf("PLZ ist: %d", person.plz[7]);
    }
    


  • Vielen Dank für die rasche Hilfe!

    Ich versteht zwar nicht, warum

    person.plz = malloc(8 * sizeof(int));
    

    wenn ich nur Speicher für einen int benötige = 1 Byte??

    Aber durch diesen Tipp bin ich auf eine andere Lösung gekommen:
    Der Fehler liegt bei scanf...

    scanf("%d", &(*person.plz));
    

    Dann der Zugriff beim Auslesen:

    plz_zwei = (*person.plz);
    

    MfG - fotofoto



  • &(*person.plz)
    

    Was soll das bringen?
    person.plz hätte es auch getan



  • Und wozu brauchst du dort überhaupt einen Zeiger? Ein int ist doch klein genug, um direkt in den struct reingepackt zu werden.



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Sehr geehrtes fotofoto !

    Ich habe hier gelernt, das man statt

    (int*)malloc( sizeof(int) );
    

    lieber

    malloc( sizeof(int) );
    

    schreiben sollte.

    Und naja, wie CStoll schon geschrieben hat, int ist für ne PLZ groß genug, um nicht zu sagen überdimensioniert, da braucht man nicht extra mit nem Zeiger Speicher zu reservieren.

    Ansosten ist der Zugriff auf die Strukturvariable meiner Ansicht nach Syntaktisch völlig einwandfrei.

    Oder wie oder was.

    Mit freundlichen Grüßen,
    p.


Anmelden zum Antworten