Zeiger auf einen Zeiger in einem rekursiven Aufruf
-
Hi Leute!
Hab ein Problem bei dem rekursiven Funktionsaufruf add_list(). Die Funktion soll rekursiv ein neues Element an das Ende der bestehenden List hängen. Beim kompilieren tritt jedoch immer ein Fehler beim Aufruf im ELSE – Zweig auf. Was muss ich machen, damit ich wieder einen Pointer auf meinen Listenpointer bekomme (siehe Kommentar im Quelltext) ?
typedef struct list { int zahl; struct list * next; }t_list; t_list * new_list() { t_list * head = malloc(sizeof(t_list)); head->next = NULL; return (head); } void add_list (t_list * element, t_list ** liste) { if (liste == NULL) { *liste = element; } else { add_list(element, &(liste->next)); /*&(liste->next) <- Warum nicht so?*/ } } int main () { t_list * liste = NULL, * element; element = new_list (); element->zahl = 10; add_list(element, &liste); printf("Zahl %i\n", liste->zahl); return (0); }
-
keine ahnung was du willst.
*&foo
wäre das selbe wie foo
denn &foo ist die adresse von foo und *foo wäre der wert auf den foo zeigt.
somit ist *&foo der wert, der bei der adresse von foo liegt (und das ist foo)was war nochmal die frage?
-
Ich habe eine dynamische Liste. Irgendwo ist ein Element erzeugt worden, dass nun an eine schon vorandene Liste angehängt werden soll. Dies soll mit Hilfe einer Funktion der Form
(...) add_list(element, liste); (...)
geschehen. Aber leider hab ich das nicht geschaft. Oben siehst du meine Idee, doch das klappt so nicht. Wie würdest du denn das Problem lösen?
-
Es muss
add_list(element, &(*liste)->next);
heissen.