函数名与函数指针

函数名与函数指针

ID:14006176

大小:44.00 KB

页数:5页

时间:2018-07-25

函数名与函数指针_第1页
函数名与函数指针_第2页
函数名与函数指针_第3页
函数名与函数指针_第4页
函数名与函数指针_第5页
资源描述:

《函数名与函数指针》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、函数名与函数指针一通常的函数调用一个通常的函数调用的例子://自行包含头文件voidMyFun(intx);//此处的声明也可写成:voidMyFun(int);intmain(intargc,char*argv[]){MyFun(10);//这里是调用MyFun(10);函数return0;}voidMyFun(intx)//这里定义一个MyFun函数{printf(“%d\n”,x);}这个MyFun函数是一个无返回值的函数,它并不完成什么事情。这种调用函数的格式你应该是很熟悉的吧!看主函数中调用My

2、Fun函数的书写格式:MyFun(10);我们一开始只是从功能上或者说从数学意义上理解MyFun这个函数,知道MyFun函数名代表的是一个功能(或是说一段代码)。直到??学习到函数指针概念时。我才不得不在思考:函数名到底又是什么东西呢?(不要以为这是没有什么意义的事噢!呵呵,继续往下看你就知道了。)二函数指针变量的声明就象某一数据变量的内存地址可以存储在相应的指针变量中一样,函数的首地址也以存储在某个函数指针变量里的。这样,我就可以通过这个函数指针变量来调用所指向的函数了。在C系列语言中,任何一个变量,总

3、是要先声明,之后才能使用的。那么,函数指针变量也应该要先声明吧?那又是如何来声明呢?以上面的例子为例,我来声明一个可以指向MyFun函数的函数指针变量FunP。下面就是声明FunP变量的方法:void(*FunP)(int);//也可写成void(*FunP)(intx);你看,整个函数指针变量的声明格式如同函数MyFun的声明处一样,只不过??我们把MyFun改成(*FunP)而已,这样就有了一个能指向MyFun函数的指针FunP了。(当然,这个FunP指针变量也可以指向所有其它具有相同参数及返回值的函

4、数了。)三通过函数指针变量调用函数有了FunP指针变量后,我们就可以对它赋值指向MyFun,然后通过FunP来调用MyFun函数了。看我如何通过FunP指针变量来调用MyFun函数的://自行包含头文件voidMyFun(intx);//这个声明也可写成:voidMyFun(int);void(*FunP)(int);//也可声明成void(*FunP)(intx),但习惯上一般不这样。intmain(intargc,char*argv[]){MyFun(10);//这是直接调用MyFun函数FunP=&

5、MyFun;//将MyFun函数的地址赋给FunP变量(*FunP)(20);//这是通过函数指针变量FunP来调用MyFun函数的。}voidMyFun(intx)//这里定义一个MyFun函数{printf(“%d\n”,x);}请看黑体字部分的代码及注释。运行看看。嗯,不错,程序运行得很好。哦,我的感觉是:MyFun与FunP的类型关系类似于int与int*的关系。函数MyFun好像是一个如int的变量(或常量),而FunP则像一个如int*一样的指针变量。inti,*pi;pi=&i;//与Fun

6、P=&MyFun比较。(你的感觉呢?)呵呵,其实不然??四调用函数的其它书写格式函数指针也可如下使用,来完成同样的事情:代码之一://自行包含头文件voidMyFun(intx);void(*FunP)(int);//声明一个用以指向同样参数,返回值函数的指针变量。intmain(intargc,char*argv[]){MyFun(10);//这里是调用MyFun(10);函数FunP=MyFun;//将MyFun函数的地址赋给FunP变量FunP(20);//这是通过函数指针变量来调用MyFun函数的

7、。return0;}代码之二:voidMyFun(intx)//这里定义一个MyFun函数{printf(“%d\n”,x);}我改了黑体字部分(请自行与之前的代码比较一下)。运行试试,啊!一样地成功。咦?FunP=MyFun;可以这样将MyFun值同赋值给FunP,难道MyFun与FunP是同一数据类型(即如同的int与int的关系),而不是如同int与int*的关系了?(有没有一点点的糊涂了?)看来与之前的代码有点矛盾了,是吧!所以我说嘛!请容许我暂不给你解释,继续看以下几种情况(这些可都是可以正确运

8、行的代码哟!):代码之三:intmain(intargc,char*argv[]){MyFun(10);//这里是调用MyFun(10);函数FunP=&MyFun;//将MyFun函数的地址赋给FunP变量FunP(20);//这是通过函数指针变量来调用MyFun函数的。return0;}代码之四:intmain(intargc,char*argv[]){MyFun(10);//这里是调用MyFun(10);函数FunP=M

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。