
函数与指针分析、回调函数
发布日期:2021-05-08 03:06:48
浏览次数:10
分类:精选文章
本文共 1066 字,大约阅读时间需要 3 分钟。
C语言中通过typedef为函数类型重命名
typedef type name(parameter list)
例:
typedef int f(int,int);typedef void p(int);
函数指针
函数指针用于指向一个函数(指向函数体的入口地址)函数名是执行函数体的入口地址可通过函数类型定义函数指针:FuncType* pointer;也可以直接定义:type(*pointer)(parameter);-pointer为函数指针变量名-type为所指函数的返回类型-parameter list为所指函数的参数类型列表
#includetypedef int(FUNC)(int);int test(int i){ return i;}void f(){ printf("Call f()...\n");}int main(){ FUNC* pt = test;//函数名代表地址 void(*pf)() = &f;//pf指针指向无参数值、无返回值的函数(这里加不加&无所谓,都代表函数入口地址) printf("pf = %p\n",pf); printf("f = %p\n",f); printf("&f = %p\n",&f); pf();//这两种调用方法都可以 (*pf)();//同上(老式编译器) printf("Function pointer call:%d\n",pt(2)); return 0;}
为什么要动函数指针?嵌入式开发公司要用到:
面试小问题 如何使用C语言直接跳转到某个固定地址开始执行? 答:通过函数指针就可以,比如上面代码中将void (*pf)()=地址;就可以了回调函数
回调函数是利用函数指针实现的一种调用机制回调机制原理-调用者不知道具体时间发生时需要调用的具体函数-被调函数不知道何时被调用,只知道需要完成任务-当具体时间发生时,调用者通过函数指针调用具体函数回调机制中的调用者和被调函数互不依赖
实例:
typedef int(*Weapon)(int);void fight(Weapon wp,int arg){ int result = 0; printf("Fight boss!\n"); result = wp(arg); printf("Boss loss:%d\n",result);}int knife(int n){ int ret = 0; int i=0; for(i=0;i
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年03月24日 17时43分28秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
利用Python实现循环队列
2021-05-08
十大排序算法之四:希尔排序(Python)
2021-05-08
利用递归实现二叉树的前中后序遍历(Python)
2021-05-08
A*寻路算法(Python)
2021-05-08
Python刷题输入输出
2021-05-08
冒泡排序又来啦(C/C++版本)
2021-05-08
python负数存储
2021-05-08
求二维数组中最大值的位置
2021-05-08
python中sort和sorted的区别
2021-05-08
防碰撞算法
2021-05-08
vue中echart数据动态切换,一看就懂
2021-05-08
Python3.6爬虫记录
2021-05-08
搞清楚Spring Cloud架构原理的这4个点,轻松应对面试
2021-05-08
1月份2月份GitHub上最热门的23个Java开源项目
2021-05-08
maven安装
2021-05-08
2020第十五届全国大学生智能汽车竞赛——4X4矩阵键盘+Flash调参系统
2021-05-08
合并两个有序数组
2021-05-08
Ubuntu 环境下使用中文输入法
2021-05-08
小白学习Vue(?)--model选项的使用(自定义组件文本框双向绑定)
2021-05-08
聊聊我的五一小假期
2021-05-08