我正在学习Unix中的信号处理,然后遇到了这个问题。
void (*signal(int sig, void (*func)(int)))(int);
我不理解这个原型以及如何返回一个指向函数的指针。
我还阅读了这篇答案:C语言中函数指针是如何工作的?,但对我来说并不清楚。
它应该返回一个函数指针,但我不明白它在哪里将返回类型指定为另一个函数指针。
我认为,如果我在函数定义中使用
(*foo(int n))
,则该函数foo(int n)
的返回类型变为函数指针。这正确吗?有没有更简单的例子呢?
void (*foo(int))
(与void *foo(int)
相同但不是void (*foo)(int)
)和void (*foo(int))(long)
。换句话说:函数的返回类型是签名之外的内容,而不仅仅是其左侧的内容。 - millimoose