最近のSlashdot のインタビューで、Linus Torvalds は、一部の人々がポインターを正しく使用する方法を本当に理解していないことを示す方法で使用する例を示しました。
残念ながら、私は彼が話している人の 1 人であるため、彼の例も理解できませんでした。
「前の」エントリを追跡して単一リンクリストエントリを削除し、次のようなことをしてエントリを削除する人が多すぎるのを見てきました
if (prev) prev->next = entry->next; else list_head = entry->next;
そして、そのようなコードを見るたびに、「この人はポインターを理解していません」と言います。そして悲しいことに、それは非常に一般的です。ポインターを理解している人は、「エントリ ポインターへのポインター」を使用し、それを list_head のアドレスで初期化します。そして、リストをトラバースするときに、次のようにするだけで、条件を使用せずにエントリを削除できます。
*pp = entry->next
このアプローチが優れている理由と、条件文なしでどのように機能するかについて、誰かがもう少し説明できますか?