【发布时间】:2016-01-05 23:36:25
【问题描述】:
有人能告诉我,这个功能怎么可能有效? 这是我的结构:
struct el{
int key;
struct el *next;
};
typedef struct el elListy;
typedef elListy *list;
这是函数:
void delete(list *l, int zm)
{
list p, *k;
k = l;
while ((*k))
{
if ((*k)->key == zm) {
p = *k;
*k = (*k)->next;
free(p);
}
else
{
k = &(*k)->n;
}
}
}
如果有人能说明,那就太棒了。
【问题讨论】:
-
不要
typedef指针。很难区分什么是指针,什么是双指针。另外,在while块中添加大括号,这确实令人困惑。 -
与其让我们逐行解释代码,不如告诉我们您具体不明白的地方。您是否在调试器中甚至在纸上浏览过代码?
-
是的,我使用调试器和纸张浏览了代码,我的问题是了解这里的指针是如何工作的。
-
我认为这不是真正的代码。不要使用单个字符作为说明符,你不能那么懒惰,因为你的编辑器很可能会帮助你使用它的自动完成功能。
-
是的,这是真正的学习代码,但一开始一切都很艰难。在这个例子中,最难的仍然是指针。
标签: c function pointers linked-list function-pointers