- 2
- 0
- 约4.94千字
- 约 7页
- 2017-08-23 发布于河南
- 举报
彻底搞定C指针-函数名与函数指针函数名与函数指针一 通常的函数调用????一个通常的函数调用的例子://自行包含头文件void MyFun(int x);????//此处的申明也可写成:void MyFun( int );int main(int argc, char* argv[]){???MyFun(10);?????//这里是调用MyFun(10);函数??????return 0;}void MyFun(int x)??//这里定义一个MyFun函数{???printf(“%d\n”,x);}????这个MyFun函数是一个无返回值的函数,它并不完成什么事情。这种调用函数的格式你应该是很熟悉的吧!看主函数中调用MyFun函数的书写格式:MyFun(10);????我们一开始只是从功能上或者说从数学意义上理解MyFun这个函数,知道MyFun函数名代表的是一个功能(或是说一段代码)。????直到——????学习到函数指针概念时。我才不得不在思考:函数名到底又是什么东西呢?????(不要以为这是没有什么意义的事噢!呵呵,继续往下看你就知道了。)二 函数指针变量的申明????就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样,我就可以通过这个函数指针变量来调用所指向的函数了。????在C系列语言中,任何一个变量,总是要先申明,之后才能使用的。那么,函数指针变量也应该要先申明吧?那又是如何来申明呢?以上面的例子为例,我来申明一个可以指向MyFun函数的函数指针变量FunP。下面就是申明FunP变量的方法:void (*FunP)(int) ;???//也可写成void (*FunP)(int x);????你看,整个函数指针变量的申明格式如同函数MyFun的申明处一样,只不过——我们把MyFun改成(*FunP)而已,这样就有了一个能指向MyFun函数的指针FunP了。(当然,这个FunP指针变量也可以指向所有其它具有相同参数及返回值的函数了。)三 通过函数指针变量调用函数????有了FunP指针变量后,我们就可以对它赋值指向MyFun,然后通过FunP来调用MyFun函数了。看我如何通过FunP指针变量来调用MyFun函数的://自行包含头文件void MyFun(int x);????//这个申明也可写成:void MyFun( int );void (*FunP)(int );???//也可申明成void(*FunP)(int x),但习惯上一般不这样。int main(int argc, char* argv[]){???MyFun(10);?????//这是直接调用MyFun函数???FunP=MyFun;??//将MyFun函数的地址赋给FunP变量???(*FunP)(20);????//这是通过函数指针变量FunP来调用MyFun函数的。}void MyFun(int x)??//这里定义一个MyFun函数{???printf(“%d\n”,x);}????请看黑体字部分的代码及注释。 ????运行看看。嗯,不错,程序运行得很好。????哦,我的感觉是:MyFun与FunP的类型关系类似于int 与int *的关系。函数MyFun好像是一个如int的变量(或常量),而FunP则像一个如int *一样的指针变量。int i,*pi;pi=i;????//与FunP=MyFun比较。????(你的感觉呢?)????呵呵,其实不然——四 调用函数的其它书写格式函数指针也可如下使用,来完成同样的事情://自行包含头文件void MyFun(int x);????void (*FunP)(int );????//申明一个用以指向同样参数,返回值函数的指针变量。int main(int argc, char* argv[]){???MyFun(10);?????//这里是调用MyFun(10);函数???FunP=MyFun;??//将MyFun函数的地址赋给FunP变量???FunP(20);????//这是通过函数指针变量来调用MyFun函数的。??????return 0;}void MyFun(int x)??//这里定义一个MyFun函数{???printf(“%d\n”,x);}我改了黑体字部分(请自行与之前的代码比较一下)。运行试试,啊!一样地成功。咦?FunP=MyFun;可以这样将MyFun值同赋值给FunP,难道MyFun与FunP是同一数据类型(即如同的int 与int的关系),而不是如同i
您可能关注的文档
- 国家CAD考试题库.doc
- 国家计算机2级c语言题目.doc
- 国家计算机二级考试公共基础知识教.doc
- 国家预防腐败局网站建设项目需求书.doc
- 国脉实时操作系统材料.doc
- 国内ANSYS论坛精华.doc
- 国家计算机二级_C语言上机国二真题.doc
- 国内首款Android 4.0智能机即将问世.doc
- 国内外linux 学习网站网址大全.doc
- 国外程序员推荐:每个程序员都应读的书.doc
- 25-26学年政治(部编版)选择性必修第二册课件:第1单元 周清1 民法中的人身权及财产权.pptx
- 25-26学年政治(部编版)选择性必修第二册课件:1.4.1 权利保障 于法有据.pptx
- 2025北京丰台区高二(上)期中地理(A卷)含答案.docx
- 2025北京三帆中学初三(上)开学考英语试题含答案.docx
- 2025北京一零一中初三9月月考语文试题含答案.docx
- 2025北京海淀区初三(上)期中道法试题含答案.docx
- 2025北京丰台区高一(上)期中政治(A卷)含答案.docx
- 25-26学年政治统编版必修4课件:3.3 唯物辩证法的实质与核心.pptx
- 25-26学年政治统编版必修4课件:7.2 正确认识中华传统文化.pptx
- 湖北省部分高中2026届高三上学期二模联考 历史试卷.docx
最近下载
- 世界多极化课件-2026届高考政治一轮复习.pptx VIP
- 情感纠纷和解协议书.docx VIP
- 《合同变更与解除》课件 —— 深入解析合同法律风险与管控策略.ppt VIP
- 《现代物流学》说课.ppt VIP
- 2024年苏教版五年级(上)期末考试数学试卷(附答案).pdf VIP
- 浙江省杭州市下沙区杭四下沙2024-2025学年高二上学期期末考物理试卷(原卷版+解析版).docx VIP
- 第六课+走进经济全球化课件-2026届高考政治一轮复习统编版选择性必修一当代国际政治与经济.pptx VIP
- 新解读(2025)《HJ_T 400-2007车内挥发性有机物和醛酮类物质采样测定方法》.pptx VIP
- 《深圳市高质量幼儿园过程性质量提升指导手册》知识检测题测试卷附答案.docx
- 物流公司安全管理制度范本.docx VIP
原创力文档

文档评论(0)