Kann mir bitte jemand helfen mit dem Zugriff auf Zeiger mit in einer Union, bekomme ich immer ein [Error] ungültigen Typ Argument von '->' (haben 'struct node'). Hier ist ein Ausschnitt mit meiner Datenstruktur in ihm:C-Programmierung: Zugriff auf Zeiger in einer Union
typedef enum{LEAF,INODE}indicator;
typedef struct twoThree{
indicator indic;
union{
struct L{
int key;
}leaf;
struct node{
int key1,key2;
struct twoThree *LC,*MC,*RC;
}iNode;
}U;
}*TTT;
void insertElem(TTT *T, int elem)
{
TTT *temp;
if(*T==NULL){
*T=initTree();
(*T)->indic = LEAF;
(*T)->U.leaf.key = elem;
}else if((*T)->indic == LEAF){
if(elem < (*T)->U.leaf.key){
(*temp)=initTree();
(*temp)->indic = INODE;
(*temp)->U.iNode.key1 = elem;
**(*temp)->U.iNode->LC = *T; /*This is my problem"->LC" part*/**
}
}
}
TTT initTree()
{
TTT T;
T=(TTT)malloc(sizeof(struct twoThree));
if(T!=NULL){
printf("Initialization of tree was successful.\n");
}else{
printf("Failed initialization of tree.\n");
}
return T;
}
Wenn jemand auf darauf hinweisen könnte, wie ich meine Zeiger innerhalb der Union zugegriffen wird, das wäre toll. Danke Leute.
Sie haben mehrere Fehler. Für den Anfang, wo "Temp" zeigen, wenn Sie es dereferenzieren? –
'typedef struct twoThree {...} * TTT' - in den meisten Fällen ist es eine schlechte Idee," typedef "-Zeiger zu schreiben. –
Wie Ihr Problem ist 'U.iniode' kein Zeiger auf eine Struktur, es ist eine Struktur * Objekt *, und deshalb sollten Sie den Pfeiloperator' -> 'nicht verwenden, um auf seine Mitglieder zuzugreifen. –