Pointer auf Struktur übergeben



  • Hallo,

    ich bin noch Anfänger in C und hab auch schon überall gesucht aber nichts wirklich brauchbares gefunden.

    Also mein Problem ist ich habe eine Struktur:

    struct Person{
    char *vorname;
    char *nachname;
    int alter;
    int gebJahr;
    }

    und diese Funktion:

    void AddPerson(int *count, struct Person **p);

    in meinen Main Programm sieht es so aus:

    int main(void)
    {
    struct Person *p;
    int count=0;
    AddPerson(&count, *p);
    return 0;
    }

    Ich wollte es so übergeben aber der Compiler gibt mir folgende zwei Fehlermeldungen:

    error: incompatible type for argument 2 of 'AddPerson'
    note: expected 'struct Person **' but argument is of type 'struct Person'

    ich hoffe jemand kann mir helfen



  • Denozone schrieb:

    Hallo,

    ich bin noch Anfänger in C und hab auch schon überall gesucht aber nichts wirklich brauchbares gefunden.

    Also mein Problem ist ich habe eine Struktur:

    struct Person{
      char *vorname;
      char *nachname;
      int alter;
      int gebJahr;
    }
    

    und diese Funktion:

    void AddPerson(int *count, struct Person **p);
    

    in meinen Main Programm sieht es so aus:

    int main(void)
    {
      struct Person *p;
      int count=0;
      AddPerson(&count, *p); 
      return 0;               
    }
    

    Ich wollte es so übergeben aber der Compiler gibt mir folgende zwei Fehlermeldungen:

    error: incompatible type for argument 2 of 'AddPerson'
    note: expected 'struct Person **' but argument is of type 'struct Person'

    ich hoffe jemand kann mir helfen

    struct Person **p definiert einen Zeiger auf einen Zeiger der auf eine struct zeigt.

    Durch den * bei *p in AddPerson(&count, *p); dereferenzierst du den Zeiger, d.h. du bekommst den Inhalt.
    Du brauchst aber die Adresse von p. Die gibt es mit &.

    AddPerson(&count,&p);
    


  • Danke jetzt hats geklappt 🙂


Anmelden zum Antworten