Problem mit Zeigerarray



  • struct my_stack{
    	void* data;
    	unsigned cellSize, number, maxNumber;
    };
    
    my_stack* stackPtr[MAX_NUMBER_OF_STACKS] = {NULL, NULL, NULL, NULL};
    /* zu der obigen Programmzeile meint mein Compiler folgendes:
    Syntaxfehler: Es fehlt '{' vor '*' */
    

    weiters ist der Compiler der Meinung, dass my_stack nicht deklariert wurde, obwohl die struktur direkt darüber steht.

    Diese Zeile hier:

    my_stack* stackPtr[4] = {NULL, NULL, NULL, NULL};
    

    das bedeutet doch, dass ich ein Array mit 4 Zeigern auf my_stack Strukturen erzeugen möchte (und vorläufig mit NULL initialisieren) ?

    Warum kann man das nicht kompilieren (?)



  • Die Fehlermeldung ist zwar weg, aber ich stehe vor einem Rätsel, wenn ich die gleiche Struktur mit typedef definiere:

    typedef struct{
     void* data;
     unsigned cellSize, number, maxNumber;
    }my_stack, *pmy_stack;
    
    pmy_stack stackPtr[4] = {NULL};
    

    dann funktioniert es plötzlich, obwohl doch (pmy_stack) exakt das selbe wie zuvor (my_stack*) ist. Oder doch nicht? Muss man solche Zeiger prinzipiell mit typedef machen ?



  • Du solltest in dem Falle ein tupedef vor das struct schreiben.



  • Hi @HappyPeppi
    versuch mal das hier:

    struct my_stack* stackPtr[MAX_NUMBER_OF_STACKS] = {NULL, NULL, NULL, NULL};
    

    da fehlte das "struct"

    Aber ich denke es ist vielleicht besser mit "typedef" zu arbeiten wie Hartmut1164 schon erwähnt hat.

    /EDIT: sonst kannst du auch deinen pointer " *stackPtr " direkt nach deinem struct machen:
    so etwa:
    struct ... {
    } *stackPtr;


Anmelden zum Antworten