0

下面的语句是什么意思。

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

注意:- 一般来说,我在理解这些表达方式时遇到问题。可以,有人请为此建议我一些好的材料(网络或书籍)吗?

4

2 回答 2

1

您应该尝试从内到外“解析”表达式:

void*(*)(void*)

指向一个函数的函数指针,该函数需要一个 void 指针并返回一个 void 指针

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

转换为期望 void 指针并返回 void 指针的函数指针

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

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

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

这是 C 编程教科书中的一个工作示例吗?

于 2012-10-15T11:51:07.540 回答
0

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

于 2012-10-15T11:41:27.390 回答