signal函数
- 库
#include <signal.h>
- signal函数
void (*signal(int signo, void (*func)(int)))(int)
-
- 返回值是函数指针
- void (*)(int)
- signal两个参数
- signo
- void (*func)(int)
- 等价于
- 返回值是函数指针
typdef void (*tRet)(int); tRet signal(int signo, void (*func)(int)); tRet signal(int signo, tRet func);
-
- 分解
- 不考虑返回值,即 函数名+参数列表
- 分解
signal(int signo, void (*func)(int)) <==> A
-
-
- 返回值为tRet
-
tRet A; void (*A)(int); void (*signal(int signo, void (*func)(int)))(int);
-
- 当返回值为int时
int add(int a, int b) { return a+b; } int main() { int sum = add(3, 5); add(3, 5); 8; return 0; }
-
- 当返回值为函数指针时
typedef void (*tOutput)(int); void oput(int i) { printf("This is for test: %d.\n", i); } tOutput test(int i, tOutput func) { func(i); return func; } int main() { tOutput func = test(1, oput);
test(2, oput); func(5); return 0; }
输出:
This is for test: 1. This is for test: 2. This is for test: 5.
posted on 2021-04-25 17:59 toughcactus 阅读(82) 评论(0) 编辑 收藏 举报