【发布时间】:2021-12-30 00:46:46
【问题描述】:
这是节点
typedef struct s_list
{
void *content;
struct s_list *next;
} t_list;
void ft_lstclear(t_list **lst, void (*del)(void*))
{
t_list *temp;
while ((*lst) != NULL)
{
temp = (*lst)->next;
del((*lst)->content);
free(*lst);
*lst = temp;
}
}
为什么当我从函数中删除 () 时不起作用
void ft_lstclear(t_list **lst, void (*del)(void*))
{
t_list *temp;
while (*lst != NULL)
{
temp = *lst->next;
del(*lst->content);
free(*lst);
*lst = temp;
}
}
我正在尝试删除并释放给定的元素和每个 该元素的后继元素,使用函数“del” 和免费(3)。 指向列表的指针必须设置为 空。
【问题讨论】:
-
为什么要编译?
lst->next与(*lst)->next不同。您还需要将t_list **lst更改为t_list *lst。 -
但是当我使用 *lst -> next 它也不起作用
-
()的目的是什么
-
**表示“指向指针数组的指针”。因此,list[0]和*list引用“同一个指针”。
标签: c pointers undefined-behavior dereference