下面的语句是什么意思。
((void*(*)(void*))keepfunc)(val)
注意:- 一般来说,我在理解这些表达方式时遇到问题。可以,有人请为此建议我一些好的材料(网络或书籍)吗?
您应该尝试从内到外“解析”表达式:
void*(*)(void*)
指向一个函数的函数指针,该函数需要一个 void 指针并返回一个 void 指针
(void*(*)(void*))keepfunc
转换为期望 void 指针并返回 void 指针的函数指针
((void*(*)(void*))keepfunc)(val)
这应该是错误的,因为必须先取消引用函数指针才能调用它。它应该看起来像这样:
(*(void*(*)(void*))keepfunc)(val)
这是 C 编程教科书中的一个工作示例吗?
这是一个强制转换,它将 keepfunc 转换为接受 void* 参数并返回 void* 结果值的函数指针,然后通过将 val 作为参数传递来评估函数(虽然,我认为在 keepfunc 之前应该有一个星号,因为您需要在调用它之前尊重函数指针)。我认为您应该在谷歌中查找函数指针,这应该可以解决问题。