In un sacco di esempi che ho letto un semplice getListLength() funzione sarebbe simile a questa:puntatori come argomenti di funzioni C
int getListLength(struct node *head)
{
struct node *temp = head;
int iCount = 0;
while (temp)
{
++iCount;
temp = temp->next;
}
return iCount;
}
Quello che mi colpisce come non necessari è la dichiarazione di un puntatore locale (in questo caso * temp) che copia il parametro passato. Se ricordo correttamente, i parametri passati ottengono le proprie copie. Quindi, non ci sarà bisogno di un puntatore locale che copia la * testa solo perché la * testa è una copia stessa, giusto? In altre parole, sarebbe corretto scartare il puntatore * temp e usare invece head ovunque?
"quando il codice è più lungo e più complesso." - Potrei discutere con quello. Se una funzione è più lunga dell'OP pubblicato, e se è così complessa da svolgere più di una attività e occorre ricordare i nomi delle variabili, è probabile che tale funzione venga probabilmente rifatta. –
Probabilmente è vero, ma il mondo reale raramente è perfetto come potrebbe piacerti. – jjlin