Se ho una funzione come questa che mi cancella una lista
struct elem {
int inf;
elem* pun;
};
...
elem* tmp;
while (testa!=NULL) {
tmp=testa;
testa=testa->pun;
delete tmp;
}
testa è il puntatore di accesso alla lista.
Mi chiedo se
tmp lo dichiaro e lo definisco con la stessa istruzione all'interno del while che differenza ci sia.
elem* tmp è solo una dichiarazione per cui non c'e' allocazione di memoria mentre con
tmp=testa viene riservato spazio di memoria per
tmp il quale ospiterà l' indirizzo che ha testa.
Se invece mettessi
elem* tmp=testa all'interno del while, ogni volta che eseguo il ciclo il puntatore verrà ridefinito e inizializzato.
Corretto? Funzionalmente non dovrebbe cambiare una virgola ma secondo voi qual è la strada più corretta?