函数指针:为什么ptr与&ptr的地址一样?
void print(int x)
{
cout<<x<<" ";
}
typedef void(*ptPrint)(int x);
//ptr与&ptr一样吗
ptPrint prt=print;
ptPrint fooPrt=&print;
为什么prt与fooPrt的地址是一样的?
问题点数:20、回复次数:7Top
1 楼greenteanet(扎扎实实打基础,保持一颗平常心。)回复于 2004-11-04 17:15:31 得分 0
因为print是函数名,所以一样。它本身就是代表地址。Top
2 楼kobefly(科比--网络学习中)回复于 2004-11-04 17:19:00 得分 5
函数名是什么?
就是函数的入口地址
跟数组名类似
数组名从本身来讲也是一个地址常量
int arr[];
arr == &arr(从数值上来说)
跟函数名是一样的
理解了数组名的用法
函数名也就理解了Top
3 楼shifan(Lothander)回复于 2004-11-04 17:20:15 得分 0
语法上就这么规定的,print返回函数指针,&print返回函数地址,也就是函数指针Top
4 楼xuzheng318(忧郁王子)回复于 2004-11-04 17:53:17 得分 0
我顶一下!Top
5 楼sharkhuang(走吧走吧!人总会慢慢长大~)回复于 2004-11-04 18:30:07 得分 5
a[]
&a
a
同道理Top
6 楼BluntBlade(信仰迷离·重构之道,在于Redo/Undo之间)回复于 2004-11-04 21:39:41 得分 10
arr == &arr(从数值上来说)
------
数值上相等,但类型上大不一样……Top
7 楼ZQGet()回复于 2004-11-05 20:57:50 得分 0
谢谢!Top




