日期: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++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论