PDA

Visualizza la versione completa : [C] Passare per riferimento un nodo di una lista.


milazzo.g
02-03-2014, 17:49
Buonasera, problema banale (forse per voi ma per me no...): avendo la necessitÓ di far modificare il valore di alcuni campi di un nodo di una lista, come li passo alla funzione? Vi spiego... Ad esempio: ho una lista... passo la lista ad una funzione che cerca in base ad una chiave e appena trova l'elemento sostituisce uno dei campi. Come procedo? Pensavo di passare per riferimento la lista (struct **head), copiare il valore di **head in un puntatore temporaneo, scorrere la lista fino a trovare il valore, modificarlo e poi riassegnare ad **head il valore che era stato memorizzato nel puntatore temporaneo... Ma, chiaramente, non va... Chiedo il vostro aiuto, grazie in anticipo!

torn24
03-03-2014, 09:17
Ciao , Ŕ probabile che sbagli qualcosa nel codice . se il tuo scopo Ŕ solo di cambiare valori di alcuni campi , ti basta passare la lista con un semplice puntatore .
Utilizzare un doppio puntatore per passare una lista , serve quando vuoi fare puntare ad un altro nodo , il puntatore della funzione chiamante , ma potresti ottenere lo stesso risultato restituendo dalla funzione un puntatore .

vbextreme
03-03-2014, 09:42
Se devi modificare un valore interno alla lista e non la lista stessa,non c'Ŕ bisogno di usare il doppio puntatore ma basta il puntatore singolo.
Diciamo che in una lista si una il ** solo quando c'Ŕ la necessitÓ di modificare l'elemento puntato da head.

Loading