当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

<b>C/C++中函数指针的含义</b>[VC/C++编程]

赞助商链接



  本文“<b>C/C++中函数指针的含义</b>[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

函数存放在内存的代码区域内,它们一样有地址,我们若何能得到函数的地址呢?

假如我们有一个int test(int a)的函数,那么,它的地址就是函数的名字,这一点好像数组一样,数组的名字就是数组的起始地址.

定义一个指向函数的指针用以下的情势,以上面的test()为例:

int (*fp)(int a);//这里就定义了一个指向函数的指针

函数指针不能绝对不能指向差别范例,大概是带差别形参的函数,在定义函数指针的时刻我们很简单犯以下的错误.

int *fp(int a);//这里是错误的,因为按照结合性和优先级来看就是先和()结合,然后变成了一个返回整形指针的函数了,而不是函数指针,这一点特别需求注意!

下面我们来看一个具体的例子:

#include<iostream> 
#include<string> 
usingnamespacestd; 
 
inttest(inta); 
 
voidmain(intargc,char*argv[])  
{ 
   cout<<test<<endl;//显示函数地址 
   int(*fp)(inta); 
   fp=test;//将函数test的地址赋给函数学指针fp 
   cout<<fp(5)<<"|"<<(*fp)(10)<<endl; 
//上面的输出fp(5),这是尺度c++的写法,(*fp)(10)这是兼容c语言的尺度写法,两种赞成,但注意辨别,避免写的程序产生移植性问题! 
   cin.get(); 
} 
 
inttest(inta) 
{ 
   returna; 
}

typedef定义可以简化函数指针的定义,在定义一个的时刻感受不出来,但定义多了就知道便利了,上面的代码改写成以下的情势:

#include<iostream> 
#include<string> 
usingnamespacestd; 
 
inttest(inta); 
 
voidmain(intargc,char*argv[])  
{ 
   cout<<test<<endl; 
   typedefint(*fp)(inta);//注意,这里不是生命函数指针,而是定义一个函数指针的范例,这个范例是自己定义的,范例名为fp 
   fpfpi;//这里操纵自己定义的范例名fp定义了一个fpi的函数指针! 
   fpi=test; 
   cout<<fpi(5)<<"|"<<(*fpi)(10)<<endl; 
   cin.get(); 
} 
 
inttest(inta) 
{ 
   returna; 
}

函数指针一样是可以作为参数传送给函数的,下面我们看个例子,细心阅读你将会发现它的用处,略加推理可以很便利我们举行一些复杂的编程工作.


  以上是“<b>C/C++中函数指针的含义</b>[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .