PDA

View Full Version : [c] liste


mto89
06-01-2009, 09:27
ciao, se in una funzione viene passata per valore una generica lista t cosi fatta:

t -> CELLA1 -> CELLA2 -> CELLA3 -> NULL
e nella funzione viene fatto in modo che la cella 2 punti a NULL, al ritorno nel main, ammesso che la fuznione non restituisca niente di niente ed è passata non per indirizzo, ho questa situazione:

t -> CELLA1 -> CELLA2 -> NULL
CELLA3 -> NULL

o questa?

t -> CELLA1 -> CELLA2 -> CELLA3 -> NULL

Grazie della'aiuto

DanieleC88
06-01-2009, 09:56
t → CELLA1 → CELLA2 → NULL... e CELLA3 e seguenti sono persi per sempre. :P

Ovviamente nel dirti questo sto facendo delle supposizioni su come sia implementata tale lista, ma dovresti ottenere questo risultato. :)

Kenger
06-01-2009, 09:57
La prima opzione. Chiaramente perdendo il riferimento a cella3 non potrai più accedervi in nessun modo.

mto89
06-01-2009, 10:49
La prima opzione. Chiaramente perdendo il riferimento a cella3 non potrai più accedervi in nessun modo.

ok grazie infatti l'ho appena verificato con una prova pratica

Furla
06-01-2009, 11:28
ciao, se in una funzione viene passata per valore una generica lista t cosi fatta:

t -> CELLA1 -> CELLA2 -> CELLA3 -> NULL
e nella funzione viene fatto in modo che la cella 2 punti a NULL, al ritorno nel main, ammesso che la fuznione non restituisca niente di niente ed è passata non per indirizzo, ho questa situazione:

t -> CELLA1 -> CELLA2 -> NULL
CELLA3 -> NULL

o questa?

t -> CELLA1 -> CELLA2 -> CELLA3 -> NULL

Grazie della'aiuto
"passare per valore una lista" è ambiguo, dovresti fare un esempio di codice. probabilmente intendi passare per valore il puntatore alla testa della lista; in ogni caso la situazione finale sarà la prima che dici, ed è una brutta situazione perché CELLA3 non è più accessibile e contribuisce al memory leak.