在最近的Slashdot访谈中, Linus Torvalds举例说明了一些人如何使用指针,表明他们并不真正了解如何正确使用它们。
不幸的是,由于我是他所谈论的人之一,所以我也无法理解他的榜样:
我见过太多的人通过跟踪“上一个”条目来删除单链接列表条目,然后删除该条目,例如
if (prev)
prev->next = entry->next;
else
list_head = entry->next;
每当我看到这样的代码时,我都会说“这个人不理解指针”。可悲的是,这很普遍。理解指针的人只使用“指向入口指针的指针”,并使用list_head的地址对其进行初始化。然后,当他们遍历列表时,只需执行以下操作即可删除条目而无需使用任何条件
*pp = entry->next
有人可以提供更多有关这种方法为什么更好的解释,以及在没有条件语句的情况下如何工作的更多解释吗?
慕村225694
手掌心
相关分类