Definition von Strukturen



  • Hallo Community,

    hab mal wieder eine "Popelfrage", ich denke mal das ist eine Popelfrage, und wenn ihr meint, dass es eine ist, und ich solche "Anfängerfragen" nicht in einem Thread fragen sollte, dann sagt es mir :).

    Nun zu meiner Frage. Habe gesehen, dass div_t folgendermaßen definiert ist:

    typedef struct{
       int quot;  /* quotient */
       int rem;   /* remainder */
    } div_t
    

    ;

    Im Code kann man auch als ein Typ darauf zugreifen:

    div_t x = div(10,3);
    

    Ich dachte aber, dass im obigen Fall die Struktur namenlos definiert wird und das div_t eine unmittelbare Variable von diesem Typ ist und kein Bezeichner für den Typ. Nach meines Wissens müsste die Struktur doch folgendermaßen definiert sein, damit der Name div_t als Typname benutzt werden kann:

    typedef div_t struct{
       int quot;  /* quotient */
       int rem;   /* remainder */
    }
    

    ;

    Was habe ich verpasst?



  • cilker schrieb:

    Was habe ich verpasst?

    Die Syntax von typedef.

    Ich dachte aber, dass im obigen Fall die Struktur namenlos definiert wird und das div_t eine unmittelbare Variable von diesem Typ ist und kein Bezeichner für den Typ.

    Ja, die Struktur ist namenlos. Aber da das eine typedef-Deklaration ist, wird keine Variable definiert, sondern ein Typ bzw. Typ-Alias.



  • Ach wegen dem typedef ja... hätte ich besser draufschauen sollen. Danke Bashar!



  • Wenn du keine Lust auf typedef hast, kann du es auch einfach so machen:

    struct MyStruct
    {
    int data;
    }
    
    int main()
    {
    struct MyStruct ms;
    
    return 0;
    }
    

Anmelden zum Antworten