尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
函数指针相关知识
zhangyunxin411 2026.9.51. 什么是函数指针函数指针实际上就是一种指针指向的是函数比如int(*p)(int,int);// 表示指针p指向一个参数为(int, int)返回值为int的函数函数指针怎么用函数指针就是一种指针类型要使用同样需要声明和定义intfun(inta,intb){...}int(*p)(int,int);pfun;利用 typedef 对函数指针起别名顺便归纳一下 typedef 的写法总体上就是声明一个该类的对象然后将变量名改为要起的别名就行// 比如要给一般的变量、指针变量起别名inta;// 声明typedefintI;// 别名Iint*p;// 声明typedefint*POINT;// 别名POINTstructdata{inti;charc;}stu;// 声明typedefstructdata{inti;charc;}DATA;// 别名DATAint*array[10];// 指针数组typedefint*ARRAY[10];int(*array)[10];// 数组指针typedefint(*POINT)[10];那么同样的函数指针也能这么写在之后的操作中会发现这么写很方便:typedefint(*FUN)(int,int);接下来总结函数指针的主要用途作为参数、作为返回值2. 函数指针作为参数函数作为参数很常见比如各种回调函数。只需要将一个函数指针作为参数传入回调函数就可以调用不同的函数比如voidfun1(){...}voidfun2(){...}voidcall_fun(void(*p)()){p();}call_fun(fun1);call_fun(fun2); #3.函数指针作为返回值 为什么要执行一个函数再让这个函数返回一个函数呢有什么意义主要意义有两个1.可以根据输入参数/状态动态决定要执行哪一个函数。当然你也可以用if-else实现但是当状态/参数多的时候代码会变得冗长2.在面向对象编程中有的函数被封装此时通常会通过这种方法来通过一个外部的函数接口来调用内部的私有方法 对于1给出下面的一个命令分发器的例子 c// -----命令对应的函数-----voidled_on(){printf(LED ON!);}voidled_off(){printf(LED OFF!);}voidmotor_run(){printf(MOTOR RUN!);}typedefvoid(*FUN)(void);#defineCMD_NUM3// -----两个用于维护的数组-----char*cmd_name[CMD_NUM]{led on,led off,motor run};FUN cmd_handel[CMD_NUM]{led_on,led_off,motor_run};// -----命令分发器代码-----FUNcmd_search(char*str){FUN pNULL;inti0;for(i0;iCMD_NUM;i){if(strcmp(str,cmd_name[i])0){pcmd_handel[i];returnp;}}returnp;}intmain(){charstr[10];fgets(str,10,stdin);str[strcspn(str,\n)]\0;FUN pcmd_search(str);if(p!NULL)p();return0;} 在上面的例子中命令分发器逻辑不需要修改当增删命令时只需要修改两个数组即可甚至数组和处理函数可以变成配置数据程序启动时动态加载实现在不重启系统的情况下动态增删命令。
RELATED

相关推荐

OpenAI更新解析:GPT-5.6、ChatGPT Work与Codex CLI实战指南

OpenAI更新解析:GPT-5.6、ChatGPT Work与Codex CLI实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/8 9:55:31
计算机视觉翻车实录:把检测当分类做,监督学习让我白标了5000张图

计算机视觉翻车实录:把检测当分类做,监督学习让我白标了5000张图

计算机视觉翻车实录:把检测当分类做,监督学习让我白标了5000张图 周一下午,我坐在工位上,看着标注平台里已经标到 4532 张的工业零件图片,手开始发抖。这些图片原本计划用监督学习训练一个分类模型,来检测计算机视觉中常见的表面划痕和凹陷。但我忽略了一个致命事实:生产线上随…

📅 2026/10/5 17:36:52
右值引用:C++的性能利器,一文读懂移动语义

右值引用:C++的性能利器,一文读懂移动语义

资源搬家,而不是资源复制——让C程序跑得更快前言在C编程中,我们经常遇到这样的场景:创建了一个大对象,然后需要把它传递给另一个变量。传统的方式是复制,但复制大量数据(比如百万级数组)的成本…

📅 2026/10/27 8:20:25
MORE NEWS

更多资讯

📰

800考电工证贵不贵保姆级教程帮你避坑

800考电工证贵不贵保姆级教程帮你避坑 怕考不过白交培训费?别急,这期保姆级教程手把手带你搞懂800考电工证贵不贵,还有报考流程、备考技巧、证件用途一网打尽,专为商丘房建工程从业者量身打造,让你花小钱办大事,别再被机构忽悠!…

📰

广西如何办电工证含金量高吗?新手上岗必看的实操指南

广西如何办电工证含金量高吗?新手上岗必看的实操指南 找工作没证?别让“无证上岗”毁了你的机会!广西电工证含金量高,但你知道怎么办、怎么用吗?特别是对河南中小施工企业负责人来说,电工证不仅关系到项目能否顺利开展,更牵扯到个人和企业的法律责任。…

📰

工地太忙根本没时间复习考试?孝感高压电工证考试多少钱?速看全攻略

工地太忙根本没时间复习考试?孝感高压电工证考试多少钱?速看全攻略 工地太忙根本没时间复习考试?你不是一个人。每天十几个小时的工作,晚上回家还得照顾家庭,真的很难抽出时间去准备【孝感高压电工证考试】。这不光是时间问题,还有很多人担心这个证…

📰

800考电工证贵不贵 外省证能不能转过来多少钱

800考电工证贵不贵 外省证能不能转过来多少钱 之前考的证在外省能不能转过来?你是不是也遇到过这个问题?其实不只是转证, 多少钱 、怎么考、能不能用,这些都是大家最关心的点。今天我们就从 800考电工证贵不贵…

📰

高压电工证 厦门合格标准与通过率

高压电工证 厦门怎么考?郑州报考避坑指南给你说透 之前考的证在外省能不能转过来?这个问题在咱们特种作业行业里特别常见。尤其是像高压电工证这种含金量高、门槛不低的证书,不少人在外地考了,到厦门工作时才发现不能直接用了,搞得心里没底。其实,…

📰

有几级电工证怎么考?保姆级教程教你从0到拿证

有几级电工证怎么考?保姆级教程教你从0到拿证 你是不是也担心自己学历不高,连特种作业证都报不上名?别急,今天我就用10年行业经验,从三门峡劳务班组负责人的角度,给你讲清楚【有几级电工证】的整个流程,还有补办、区别这些你可能不知道的细节。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬