首页 > 解决方案 > 用 free 调用的函数指针

问题描述


我正在练习一本关于使用 C 编程的算法的书中的一些程序。我看到以下功能:
void list_init(List *list, void (*destroy)(void *data)) {

/*  Initialize the list. */

list->size = 0;
list->destroy = destroy;
list->head = NULL;
list->tail = NULL;

return;

}

后来被称为:

list_init(&list, free);

我认为free是 C 语言中的一个函数,它被描述为:void free(void *ptr)因此需要一个参数。

那么,为什么free单独作为参数提供list_init呢?有人可以帮我理解吗?

谢谢。

标签: listfreesingly-linked-list

解决方案


我想出了这个。当调用 list->destroy(data) 时,free 的参数在另一个函数中提供。这是因为 list->destroy 设置为 'free' 的地址。


推荐阅读