以下陈述的含义是什么。
((void*(*)(void*))keepfunc)(val)
注意: - 一般来说,我有理解这些表达的问题。可能,有人 请为我推荐一些好的材料(网页或书籍)?
答案 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中查找函数指针,这应该可以解决问题。