Pisałem program, który jest dość skomplikowany w porównaniu do tego, z czym miałem do czynienia do tej pory. W każdym razie mam napisać funkcję, która będzie manipulować listą elementów. Staram się, aby to pytanie było tak proste, jak to tylko możliwe, więc napisałem całkiem prosty fragment kodu, tylko w celach informacyjnych.Jak mogę edytować wskaźnik do węzła listy z funkcji rekursji?
Oto rzeczy: najpierw zadzwonię testf
z innej funkcji zapewniając jej ważnej current
jak również i
o wartości 0. Oznacza to, że testf będzie nazywać się około 100 razy, zanim zacznie dostępu resztę kodu. Wtedy wszystkie wygenerowane instancje testf
zaczną być rozwiązywane.
void testf(listnode *current, int *i) {
wordwagon *current2;
current2 = current;
if (*i < 100) {
*i = *i + 1;
current2 = current2->next;
testf(current2, i);
}
current = current->next;
return;
}
Jeśli, powiedzmy, mam wystarczająco dużo podłączonych lista węzłów w mojej dyspozycji, jest current = current->next;
poprawny sposób na „ostatni” funkcja testf dostęp i edytować rozmówcy current2
wartość (co jest ta funkcja current
) czy jestem okropnie zły? Jeśli tak, to w jaki sposób wprowadzić zmiany w zmiennych funkcji wywołującej z wywoływanej funkcji i upewnić się, że nie znikną, gdy tylko funkcja zwróci funkcję? Uważam, że trudno jest dobrze zrozumieć, w jaki sposób działają wskaźniki.
Jest bardzo prawdopodobne, że pominąłem ważne informacje lub że nie zadałem wystarczająco jasnego pytania. Jeśli tak, proszę poinformuj mnie, żebym mógł edytować wszystko, czego potrzebujesz.
Z góry dziękuję.
trzeba zdać poi nter do wskaźnika lub zmodyfikuj 'current' zanim powtarzasz –
+1 za podanie prostego przykładu –