Il seguente codice serve per eliminare tutti gli elementi di una lista.
Dato la dichiarazione
codice:
struct Record{
int i;
Record* l;
}
Record* l;
Il seguente codice funziona:
codice:
Record* p=l;
while (l!=0)
{
l=l->l;
delete p;
p=l;
}
ho provato a trasformare il codice sopra in un ciclo for:
codice:
for (Record* p=l; l!=0; p=l)
{
l=l->l;
delete p;
}
Mi sembra che i due frammenti di codice siano equivalenti, ma in realtà, quando faccio girare il secondo, mi esce un box di messaggio di win che dice che il programma che sto lanciando ha eseguito un'operazione non valida e sarà terminato.
Perché il ciclo for è diverso dal ciclo while e perché non funziona?