simple Strukturen



  • Hi, ich komme mit der Deklaration einer Struktur nicht so ganz klar 😕

    typedef struct a {
    int i;
    unsigned c : 1;
    } b;
    

    1. Was bedeutet dieses unsigned c : 1;

    2. Wofür steht a und b?

    Also was ist der Name, und was ist dann das andere?..

    Danke!



  • a und b:
    a steht für den namen der struktur
    b steht für ein objekt, dass initialisiert wurde

    c : 1 :
    diese variable wird ein bit speicher belegen (imho unnötig bei so einer kleinen struktur)



  • BitWax schrieb:

    b steht für ein objekt, dass initialisiert wurde

    Eigentlich nicht, siehe typedef

    typedef struct tagName 
    {
        int i;
        unsigned c : 1;
    } typeName;
    
    struct tagName var1;
    typeName var2;
    

    Bei tagName muss man in variablen Definition in dem fall struct davor schreiben.
    Mit Hilfe des typedef's definirst du ein neuen type 'typeName für den alten
    diesen:

    struct tagName 
    {
        int i;
        unsigned c : 1;
    }
    


  • typedef struct tagName
    {
        int i;
        unsigned c : 1;
    } typeName;
    
    struct tagName var1;
    typeName var2;
    
    struct tagName
    {
        int i;
        unsigned c : 1;
    } objekt;
    
    struct tagName var1;
    objekt.i = 0;
    

    Bei typedef ist es der typeName und ohne typedef initialisiert man eine Variable?

    Also kann ich in meinem Fall (mit typedef) den tagName weglassen, weil dieser unnötig ist?



  • Derjenige schrieb:

    Bei typedef ist es der typeName und ohne typedef initialisiert man eine Variable?

    ja, definiert.

    Derjenige schrieb:

    Also kann ich in meinem Fall (mit typedef) den tagName weglassen, weil dieser unnötig ist?

    ja, Manchmal ist es aber nötig.
    In dem Fall:

    typedef struct tagName
    {
        int i;
        unsigned c : 1;
        struct tagName *next;
    } typeName;
    


  • Ramsis schrieb:

    ja, Manchmal ist es aber nötig.
    In dem Fall:

    typedef struct tagName
    {
        int i;
        unsigned c : 1;
        struct tagName *next;
    } typeName;
    

    Blödsinn

    typedef struct tagName typeName;
    
    struct tagName {
        int i;
        unsigned c : 1;
        typeName* next;
    };
    


  • hey schrieb:

    Ramsis schrieb:

    ja, Manchmal ist es aber nötig.
    In dem Fall:

    typedef struct tagName
    {
        int i;
        unsigned c : 1;
        struct tagName *next;
    } typeName;
    

    Blödsinn

    typedef struct tagName typeName;
    
    struct tagName {
        int i;
        unsigned c : 1;
        typeName* next;
    };
    

    Soll ich dir jetzt jede mögliche Lösung prärentieren?



  • Soll ich dir jetzt jede mögliche Lösung prärentieren?

    nein, wieso auch? -.-"
    ich sage ja nur, dass "manchmal ist es eben nötig" nicht korrekt ist. es ist
    eben nötig, sondern möglich (und manchmal mehr und manchmal weniger sinnvoll).


Anmelden zum Antworten