C语言递归声明函数
收到 adream307 的问题,我不知道,你的呢?
我想声明一个这样的函数: (我们将此类函数命名为F)
- F 的返回类型为“void”
- F的参数是一个函数指针,这个指针指向一个 与 F 类型相同的函数
我可以声明这样的函数吗?
got a question from adream307, I have no idea, what about yours?
I want to declare a function like this:
(we named this type of function as F)
- the return type of F is "void"
- the parameter of F is a function pointer, this pointer point to a
function whose type is the same as Fcan i declare a function like this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,你不能。该类型无法表达,因为它会重复自身:
但是您可以编写一个接受自身的函数,没有任何问题。想想
那完全没问题。
f
的参数类型是一个函数指针(void g()
相当于这里的void (*g)()
),其类型为与f
类型兼容。f
的参数和调用中的参数void()
和void (void())
的函数类型兼容规则代码> 指定为:两种类型都满足此兼容性规则,因此函数调用定义良好。
No you cannot. The type cannot be expressed, since it would repeat itself:
But you can write a function which accepts itself, without any problems. Consider
That's perfectly fine. The parameter type of
f
is a function pointer (void g()
is equivalent tovoid (*g)()
here) whose type is compatible with the type off
. The rule for compatibility for the function types of both the parameter off
and the argument in the call,void()
andvoid (void())
is specified as:Both types satisfy this compatibility rule, so the function call is well defined.