指针/功能组合难以理解

时间:2012-10-15 11:28:57

标签: function pointers

以下陈述的含义是什么。

((void*(*)(void*))keepfunc)(val)

注意: - 一般来说,我有理解这些表达的问题。可能,有人 请为我推荐一些好的材料(网页或书籍)?

2 个答案:

答案 0 :(得分:1)

你应该尝试从里到外“解析”表达式:

void*(*)(void*)

函数指向期望指针为void并返回void

指针的函数
(void*(*)(void*))keepfunc    

强制转换为函数指针,指向void指针并返回void

指针
((void*(*)(void*))keepfunc)(val)

这应该是错误的,因为必须先取消引用函数指针才能调用它。看起来应该是这样的:

(*(void*(*)(void*))keepfunc)(val)

这是一本关于C编程的教科书的实例吗?

答案 1 :(得分:0)

这是一个转换器,它将keepfunc转换为接受void *参数并返回void *结果值的函数指针,然后通过传递val作为参数来评估函数(尽管我认为之前应该有一个星号keepfunc,因为你需要在调用之前使用函数指针。)我认为你应该在google中查找函数指针,这应该可以解决问题。