He estado escribiendo un programa que es bastante complejo en comparación con lo que he tratado hasta ahora. De todos modos, en algún momento se supone que debo escribir una función que manipule una lista de estructuras. Intento hacer que esta pregunta sea lo más simple posible, así que escribí un código bastante simple para referencia.¿Cómo puedo editar un puntero a un nodo de lista desde una función en una recursión?
Aquí está la cosa: en un primer momento que llamo testf
de otra función dotándolo de una válida current
así como un i
con un valor de 0. Esto significa que testf llamará a sí mismo alrededor de 100 veces antes de que comience el acceso al resto del código Aquí es cuando todas las instancias generadas de testf
comenzarán a resolverse.
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;
}
Si, digamos, he suficientes nodos lista de conectados a mi disposición, es current = current->next;
el camino correcto para el "último" función testf para acceder y editar el valor de la persona que llama current2
(que es de esta función current
), ¿o estoy horriblemente equivocado? Si lo estoy, ¿cuál es la forma de hacer cambios a las variables de la función de llamada desde dentro de la función llamada y asegúrese de que no desaparecerán tan pronto como regrese la función llamada? Me resulta un poco difícil comprender cómo funcionan los punteros.
Es muy probable que haya omitido información importante o que no he hecho mi pregunta con suficiente claridad. Por favor, infórmeme si ese es el caso, así puedo editar lo que necesite.
Gracias de antemano.
tienes que pasar un POI nter al puntero, o modificar 'current' antes de recurse –
+1 para proporcionar un ejemplo simple –