bleicher: C struct

Grüße,
bin verzweiffelt -

struct pkw{
...
}audi;

pkw ist typ, audi ist variable

typedef struct pkw{
...
}audi;

jetzt ist sowohl pkw als auch audi typdeklaration der gleichen art?

wie ist es genau definiert?

MFG
bleicher

--
__________________________-

FirefoxMyth
  1. Moin.

        struct pkw{  
        //...  
        }audi;
    

    is äquivalent zu

        struct pkw{ // Definition des Typs `struct pkw`  
        //...  
        };  
        struct pkw audi; // Deklaration einer Variablen `audi` vom Typ `struct pkw`
    

    wohingegen

        typedef struct pkw{  
        // ...  
        }audi;
    

    äquivalent ist zu

        struct pkw{ // Definition des Typs `struct pkw`  
        // ...  
        };  
        typedef struct pkw audi; // Definition des Typs `audi` als Alias zu `struct pkw`
    

    d.h. struct pkw und audi können synonym verwendet werden; z.B. ist die Variablendeklaration

    audi audi;

    identisch mit

    struct pkw audi;

    Es ist anzumerken, dass (im Gegensatz zu C++) in C die type tags (d.h. struct, union, enum) zwingend erforderlich sind.

    Christoph

    1. Da war ich etwas voreilig:

      audi audi;

      ist natürlich nicht erlaubt. Es kann daher sinnvoll sein, Typnamen den Suffix \_t zu verpassen, d.h. z.B.

          typedef struct pkw audi_t;  
          audi_t audi;
      
      1. Grüße,
        danke - jetzt stimmt das system^^ aber es heißt dan auch, dass typedef struct eine verkuplung von 2 anweisungen ist - einmal
        typedef bla (als alias zu->) struct{}name; ?

        also bei struct{}bla;
        wäre bla typ?

        stuct bla{} == stuct{}bla; ????

        MFG
        bleicher

        --
        __________________________-

        FirefoxMyth