Dans un récent Interview de Slashdot Linus Torvalds a donné un exemple de la façon dont certaines personnes utilisent les pointeurs d'une manière qui indique qu'elles ne comprennent pas vraiment comment les utiliser correctement.
Malheureusement, comme je fais partie des personnes dont il parle, je n'ai pas non plus compris son exemple :
J'ai vu trop de personnes qui suppriment une entrée de liste à lien unique en gardant la trace de l'entrée "prev", puis pour supprimer l'entrée, en faisant quelque chose du genre
if (prev)
prev->next = entry->next;
else
list_head = entry->next;
et à chaque fois que je vois du code comme ça, je me dis "Cette personne ne comprend pas les pointeurs". Et c'est malheureusement assez commun. Les personnes qui comprennent les pointeurs utilisent simplement un "pointeur vers le pointeur d'entrée", et l'initialisent avec l'adresse de la tête de liste. Puis, en parcourant la liste, ils peuvent supprimer l'entrée sans utiliser de conditionnel, en faisant simplement
*pp = entry->next
Quelqu'un peut-il expliquer un peu plus pourquoi cette approche est meilleure, et comment elle peut fonctionner sans une déclaration conditionnelle ?