Ho scritto un programma abbastanza complesso rispetto a quello che ho affrontato fino ad ora. Ad ogni modo, a un certo punto, dovrei scrivere una funzione che manipolerà una struct list. Sto cercando di rendere questa domanda il più semplice possibile, quindi ho scritto un semplice pezzo di codice solo per riferimento.Come posso modificare un puntatore a un nodo elenco da una funzione in una ricorsione?
Qui è la cosa: in un primo momento che io chiamo testf
da un'altra funzione dotandola di una valida current
così come un i
con un valore pari a 0. Ciò significa che testf chiamerà sé circa 100 volte prima che cominci l'accesso il resto del codice. Questo è quando tutte le istanze generate di testf
inizieranno a essere risolte.
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;
}
Se, diciamo, ho abbastanza nodi della lista connessi a mia disposizione, è current = current->next;
il modo corretto per l ' "ultima" la funzione testf per accedere e modificare il valore del chiamante current2
(che è di questa funzione current
), o sono terribilmente sbagliato? Se lo sono, qual è il modo per apportare modifiche alle variabili della funzione chiamante dall'interno della funzione chiamata ed essere sicuro che non andranno via non appena la funzione chiamata ritorna? Trovo che sia difficile riuscire a capire bene come funzionano i puntatori.
È molto probabile che abbia omesso informazioni importanti o che non abbia posto abbastanza chiaramente la mia domanda. Ti prego di informarmi se è così che posso modificare in qualunque cosa ti serva.
Grazie in anticipo.
Devi passare un POI prima del puntatore, o modifica 'current' prima di recitare –
+1 per fornire un semplice esempio –