- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
C语言编程第十一讲:函数指针
本讲内容一、函数指针定义二、函数回调三、动态排序四、函数返回值是函数指针
一、函数指针定义
函数地址栈区堆区静态区常量区代码区intmaxValue(inta,intb){ returnab?a:b;}函数名和数组名一样是地址!
函数指针定义intmaxValue(inta,intb)int(*p)(inta,intb)=NULL;函数指针定义,p是变量,其它是类型(通常没有形参a,b)
函数指针使用p=maxValue;intm=p(3,5);赋值函数名指针可当函数用
练习1 voidprintHello(void);定义一个可以指向上述函数的函数指针,并通过函数指针实现调用该函数
练习2定义两个函数,一个求最大值,一个求和,输入max或sum分别求3,5的最大值或和(提示:定义一个函数指针,根据输入内容指向不同函数,最后一次调用完成)
二、回调函数
函数指针做参数
intgetValue(inta,intb,int(*p)(int,int));函数指针做getValue函数的参数函数名
函数调用
intvalue=getValue(3,5,maxValue);getValue执行的过程中再调用(回调)maxValue
回调过程intmaxValue(…){ ......; returnmax;}voidgetValue(…int(*p)(int,int)){ p(3,5);//回调}函数名做参数传递
练习3写一函数查找成绩90分以上的学员,使用回调函数在姓名后加“你真棒”
三、动态排序
排序需求不定有30个学生需要排序1.按姓名排2.按成绩排3.按年龄排….一周后新需求,按出勤率排?无法预测的需求变更!
排序voidsortArray(int*array,intcount){ for(inti=0;icount-1;i++){ for(intj=0;jcount-i-1;j++){ if(条件){ 交换 } } }}决定排序方式的重要语句封装成函数然后在此回调
整型数组动态排序typedefbool(*PFUN)(int,int);为函数指针类型起名为PFUNvoidsortArray(int*arr,intcount,PFUNp);动态排序函数声明
练习5用动态排序实现学生按不同条件排序
四、函数返回值是函数指针
返回值为函数指针PFUNgetFunctionByName(char*name);通过功能名称查找对应的函数
数据结构typedefstructnameFunctionPair{
charname[30];
PFUNfunction;
}NameFunctionPair;功能名(name)调用函数(function)“max”maxValue“minminValue“avgavgValueNameFunctionPairlist[3];
查找对应函数功能名(name)调用函数(function)“max”maxValue“minminValue“avgavgValuePFUNfun=NULL;fun=getFunctionByName(“min”)
调用返回的函数intvalue=fun(3,5);使用返回的函数指针调用函数,完成动态调用
练习5对list增加元素,sum求和,mul求乘积.
总结一、函数指针定义(如何定义一个对应函数的指针变量?)二、回调函数(如何实现函数的回调?)三、动态排序(抽离开那部分代码,并提供接口?)四、函数返回值是函数指针(有什么做用?如何实现?)
课程预告C语言基础考试
您可能关注的文档
- python扩展黑客指南julien danjou-the hackers guide to scaling 2018Python.pdf
- 联合快运航空号机事故报告ntsb.pdf
- 名称激光测振仪用户手册41054-man vib ivs200 ivs05e.pdf
- 审查semester 1 review student finalinfsweek 1学生期末考试.pdf
- exploiting symmetry and manhattan properties for 3d object structure estimation from single multiple images利用对称性属性从单个多个图像进行对象结构估计.pdf
- 2024年30秒毕业生面试工作自我介绍.docx
- 2024年《医务人员礼仪培训》心得体会.docx
- 2024年《我爱洗澡》幼儿园小班健康教案.docx
- 2024年《叫我第一名》电影观后感.docx
- 2024年《会飞的教室》读后感400字.docx
文档评论(0)