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;