函数指针做函数参数浅析
来源:互联网 发布:ipad pro 键盘 知乎 编辑:程序博客网 时间:2024/06/17 18:17
先看看基本语法:
数组指针 语法
//定义一个int 类型的数组变量 int array[10]; //a代表的是数组首元素的地址 &a代表整个数组的地址 a+1 4 &a+1步长 40 .//定义 一个数组 类型 typedef int (my_type_array)[10]; my_type_array my_array;(my_array)[0] = 20; printf("%d\n", my_array[0]); //定义一个指针数组类型 typedef int (*pt_type_array)[10]; pt_type_array p_array; //用这种类型定义变量p_array = &array;(*p_array)[1] = 10; printf("%d\n", array[1]); //定义一个 指向数组类型的指针 int (*p_ele_array)[10]; //分配内存p_ele_array = &array;(*p_ele_array)[0] = 30;printf("%d\n", array[0]);
函数指针 语法:
int sum(int a, int b){printf("this is a sum function:%d+%d=%d\n",a,b,a+ b);return a+ b;}int main(){sum(10,20); //直接调用//定义一个函数类型 typedef int (my_type_func)(int a, int b); my_type_func *my_ = NULL; //定义了一个指针, 指向某种类型的函数.. //my_ = ∑ 有没有&都可以 my_ = sum;my_(10,10); //定义一个函数指针类型 typedef int (*p_type_func)(int a, int b);p_type_func my_p ; //定义一个指针变量 //my_p = ∑my_p = sum;my_p(10,30);return 0;}
但是和带来的好处相比,这点麻烦却是微不足道的
//底层函数实现 int sum_01(int a, int b){printf("this is a sum_01 function:%d+%d=%d\n",a,b,a+ b);return a+ b;}int sum_02(int a, int b){printf("this is a sum_01 function:2*%d+2*%d=%d\n",a,b,2*a+ 2*b);return 2*a+ 2*b;}int sum_03(int a, int b){printf("this is a sum_01 function:3*%d+3*%d=%d\n",a,b,3*a+ 3*b);return 3*a+ 3*b;}typedef int (*p_type_func)(int a, int b); //定义一个函数指针类型 接口函数声明 void select(p_type_func p_func, int a, int b) //主调函数 {p_func(a,b);}int main(){//只要符合接口声明的函数统统可以调用select(sum_01, 10,10); select(sum_02, 10,10);select(sum_03, 10,10);return 0;}
typedef int (*p_type_func)(int a, int b);这句话有什么作用 :
提前将函数返回值和函数参数做了约定,这样只要符合这个约定的函数都可以被调用,例如说 某个程序中有个按钮 ,
有的按钮是确认功能,有的是取消,是不是每种类型都有与之对应的一种按钮呢,
当然不是,那还有跳转页面的,翻页的,后退的,,,简直可以累死了,
怎么做呢
当然是只做一个按钮咯,然后功能随你添加,怎么添加功能提前约定好,只要按这种方式,就可以随意添加功能了
如果用面对对象的方法来说,就是有一个button对象,需要重写其action方法
当然我还是喜欢Qt的槽函数机制;
说到底就是回调函数, 一个函数调用另一个函数(很大可能不是他写的),然后返回到当前函数,像线程启动函数,等等 ,
这不就很像一个槽么,大概想到的就这些了,
还有最重要的一点 任务的编写者和任务的执行者分离了, a写函数实现, b调用a的函数,c也可以调用,大家都有事情干嘛是不是
不足之处,请指出
0 0
- 函数指针做函数参数浅析
- 指针做函数参数
- 函数指针做参数
- 指针做函数参数
- 函数指针做参数
- 函数指针做函数参数
- 函数指针做函数参数
- 函数指针,指针函数,指针的指针做函数参数
- 指针做函数参数使用
- 问题:指针做函数参数
- c指针做函数参数
- 指针数组做函数参数
- 函数指针做函数参数的意义
- 函数指针做函数参数思想剖析
- 善用指针---用指针做函数参数
- 多维数组的指针做函数参数
- 二维指针做函数参数传递问题
- 指针数组做函数参数的退化
- Python学习笔记(1)
- linux重定向及nohup不输出的方法
- 遗传算法入门例子和总结
- 数据库事务的四大特性以及事务的隔离级别
- linux下ls命令模拟
- 函数指针做函数参数浅析
- 分治法:数字旋转方阵
- 规定输入的字符串中,只能包含字母和*号,编写函数fun(char *a),其功能是:将字符串前、后的连续*号全部删除。主函数中输入字符串,调用函数,并输出结果字符串。例如:若字符串中的内容为: ***
- linux下Python源码包编译以及遇到的问题
- mysql存储过程
- 慕课网 Java入门第二季4.1多态的使用 课后作业交通工具选择
- 滴滴出行与斯坦福人工智能实验室达成合作
- http抓包工具charles的安装与使用
- mysql命令集合