Array von Pointern auf Structs
-
Hallöchen,
ich habe mal wieder ein Problem
Ich habe folgendes Struct:
typedef struct AClassTree{ char *achar ; int anode; struct AClassTree *something; }ACLASSTREE;
Ich möchte nun, dass "something" nicht auf ein Struct sondern auf bis zu 10 verweist. Also wäre ein Array aus Pointern auf Structs (kann man das so nennen?) doch sinnvoll, oder?
Ich habe jetzt folgenden C Code:
ACLASSTREE* n; n = (ACLASSTREE*)malloc(sizeof(ACLASSTREE)); // 10 für 10 Arraystellen? n->something= (ACLASSTREE*)malloc(10 * sizeof(ACLASSTREE)); //n2 wurde außerhalb festgelegt ist ebenfalls ein ACLASSTREE * n->something[0]= n2;
Irgendwas ist hier falsch. Da das die Zuweisung an n->something[0] nicht akzeptiert wird (incompatible types in assignment).
Wäre jemand so nett und nennt mir den richtigen Code hierfür? (Ich bin noch nicht sooo firm mit C)Ich danke euch schonmal,
bis dann
sala
-
In deiner Struktur musst du ein weiteres Sternchen vor "something" setzen. Das erste Sternchen zeigt dir an, dass es sich um ein Array handelt. Hier haben Arrays und Zeiger die gleiche Syntax. Das zweite Sternchen bestimmt den Feldtyp des Arrays, nämlich "Zeiger auf ACLASSTREE".
Damit ist dann beispielsweise sowas möglich:ACLASSTREE* n; n->something = malloc(10 * sizeof(ACLASSTREE)); n->something[0] = malloc (sizeof(ACLASSTREE)); n->something[0]->anode = 10; printf("n->something[0]->anode = %d", n->something[0]->anode);
Und mach die Casts vor malloc weg, bevor's hier wieder losgeht.
(Für Erklärungen googeln.)
-
Vielen Dank!
moagnus schrieb:
Und mach die Casts vor malloc weg, bevor's hier wieder losgeht.
(Für Erklärungen googeln.)
Ahja, schon wieder vergessen. Wird sofort weggemacht
grüße sala