【发布时间】:2014-11-07 15:18:34
【问题描述】:
我是 C 的初学者。 现在我有这样的功能
void mark_function(void *obj, void (*mark_obj)(void *));
据我了解,这是一个 void 函数,它有两个参数,第一个是 void 指针, 第二个是另一个带有 void 参数的 void 函数。
我尝试了很多方法来调用它,但它似乎无法正常工作,要么给我返回分段错误或指针类型不一样的警告。
那么这个函数到底意味着什么?应该传入什么参数?以及如何称呼它? 有什么帮助吗?
非常感谢!
【问题讨论】:
-
显示您如何尝试调用它。这是查看问题的最简单方法。
-
这看起来像一个指向函数的指针,它接受一个
void指针并返回void。 -
这不是一个“无效函数”。这是一个没有返回值的函数。它接受两个参数:第一个是任何类型的指针 (
*obj) (void) 和一个指向没有返回值的函数的指针 (void (*mark_obj)),它接受一个任何类型的指针 ((void *))。 -
@FatalError 我试过 Void mark_function(head, mark_link_list(start));其中 head 和 start 是不同链接列表的两个开始节点。
-
不要把参数传给函数指针,只传
mark_function(head, mark_link_list)。 (稍后通过指针调用函数时,将提供适当的参数。)如果函数签名不匹配,编译器会告诉你。
标签: c