C 中返回函数指针的函数指针的语法
如何声明一个指向返回另一个函数指针的函数的指针? 请与我分享语法和示例代码片段。
另外,在什么情况下会使用返回函数指针的函数指针?
How to declare a pointer to a function returning another function pointer?
Please share with me the syntax and an example code snippet.
Also, in which scenario would a function pointer returning a function pointer be used?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
这对于 typedef 来说很简单:
FP1
是指向返回FP0
类型函数指针的函数的指针类型。至于什么时候有用,那么,如果您有一个返回函数指针的函数并且需要获取或存储指向该函数的指针,那么它很有用。
This is trivial with typedefs:
FP1
is the type of a pointer to a function that returns a function pointer of typeFP0
.As for when this is useful, well, it is useful if you have a function that returns a function pointer and you need to obtain or store a pointer to this function.
如果你避免使用
typedef
,那就很难了。例如,考虑 C 标准中的signal()
:使用 typedef,更容易:
请注意,对于
signal()
函数,您通常只需使用
并让系统负责声明它。If you avoid using
typedef
, it is hard. For example, considersignal()
from the C standard:Using typedefs, it is easier:
Note that for the
signal()
function, you would normally simply use<signal.h>
and let the system worry about declaring it.如果您不需要第二个 typedef,
则这意味着“将 fptr_t 声明为指向函数 (int) 的指针,返回指向返回 float 的函数 (double) 的指针" (fptr_t : int → (double → float))
If you don't want a second typedef,
this means "declare fptr_t as pointer to function (int) returning pointer to function (double) returning float" (fptr_t : int → (double → float))