Was mache ich mit dem Befehl typedef struct F G;



  • Was ein struct ist, ist mir bekannt 😉
    Aber was mache ich mit dem Befehl

    typedef struct F G; //???
    
    //...
    
    struct F
    {
        int x,y,z;
    };
    

    ----------------------
    2.te Frage:
    Was ist:

    void(*Q)();
    

    wenn Q eine Funktion ist? Ist das ein Pointer auf eine Funktion?



  • Erste Frage: typedef erzeugt ein Typ-Synonym.

    typedef int zahl;
    zahl a = 42;
    

    Das geht natürlich für alle Typen. Die Syntax ist die gleiche wie für eine Variable, nur dass eben noch typedef davor steht. z.B. ist p hier:

    typedef int (*p)[10];
    

    ein Synonym für "Zeiger auf Array der Länge 10, das int enthält".

    2. Frage: Das ist eine Deklaration, Q sollte also möglichst nicht schon als Funktion deklariert sein 😉 Es deklariert einen Zeiger auf eine Funktion mit unbestimmt vielen Argumenten und dem Rückgabetyp void. Die kannst du dann mit Q() aufrufen.



  • Danke für die treffliche Antwort!

    Was wird jetzt hier nochmal als Typ-Synonym verwendet

    typedef struct F G;
    

    Ist F jetzt nun ein struct und G eine Instanz davon oder wie war das?



  • betrachte es erstmal so:

    struct F G;
    

    Es wird eine Variable G vom Typ struct F angelegt. Jetzt schreibst du typedef davor:

    typedef struct F G;
    

    Jetzt ist G keine Variable vom Typ struct F mehr, sondern ein Synonym für struct F.


Anmelden zum Antworten