函数名作为参数传递
来源:互联网 发布:网络电影投资公司 编辑:程序博客网 时间:2024/05/16 23:53
假如不知道signal的函数原型,考虑child_handler函数的参数从哪里来?
void child_handler(int sig) { if (sig == SIGINT) kill(pid_parent, SIGUSR1); } int main(void) { ...... signal(SIGINT, child_handler); ...... }1、无参无返回值的函数名作为另一个函数的参数
#include <stdio.h> //定义handler是一个函数指针类型,无参无返回值 typedef void (*handler)(void); void output(void) { printf("Hello World!\n"); } //无参函数作为另一个函数的参数 void test_func(handler func) { func(); } int main(void) { test_func(output); return 0; }
运行结果:Hello World!
2、有参有返回值的函数名作为另一个函数的参数
#include <stdio.h> //定义handler是一个函数指针类型,有两个参数和返回值 typedef int (*handler)(int, int); int add(int a, int b) { return a+b; } //有参有返回值函数作为另一个函数的参数 int test_func(int m, int n, handler func) { return func(m, n); } int main(void) { int a, b, sum; a = 3; b = 4; sum = test_func(a, b, add); printf("sum = %d\n", sum); return 0; }
运行结果:sum = 7
对于开始的疑惑,如果只从C语言的角度理解,原理是在执行完 signal(SIGINT, child_handler); 函数后,signal函数会将第一个参数 SIGINT 传递给 child_handler 函数。
阅读全文
0 0
- 函数名作为参数传递
- C/C++ 将函数名作为函数参数传递
- 数组名作为函数的参数传递给函数
- 函数名作为参数传递 与 回调函数
- 函数名作为参数传递 与 回调函数
- php能把函数名作为参数传递吗?
- C语言中数组名作为参数进行函数传递
- 数组名作为函数参数
- 数组名作为函数参数
- 数组名作为函数参数
- 数组名作为函数参数
- 数组名作为函数参数
- 数组名作为函数参数
- C语言中,数组名作为参数传递给函数时,退化为指针
- C语言中,数组名作为参数传递给函数时,退化为指针
- C语言中,数组名作为参数传递给函数时,退化为指针
- C++ 函数指针 函数名作为参数
- 函数名作为另一函数的参数
- 爬取煎蛋网妹子图
- 程序员,这个双十一,对自己好一点…
- linux下nodejs配置
- 深入理解Oracle Statistic统计信息
- MyBatis源码解析之JdbcType
- 函数名作为参数传递
- android recyclerview分割线
- LSP标识符(LSP ID)
- 【NOIP2017提高A组集训10.30】总结
- 面向对象语言三大特性
- CSDN博客开通手记
- 2017-10-30
- android中AIDL机制分析
- base64