| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 658 人关注过本帖
标题:一道很有意思的关于函数指针的题目
只看楼主 加入收藏
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
 问题点数:0 回复次数:2 
一道很有意思的关于函数指针的题目
void MyFun(int x);
void (*FunP)(int);

void MyFun(int x)
{
printf("%d\n",x);
}

下面是四种测试代码:
1)
int main(int argc,char** argv)
{
MyFun(10);
FunP=MyFun;
FunP(20);
return 0;
}

2)
int main(int argc,char** argv)
{
(*MyFun)(10);
FunP=&MyFun;
(*FunP)(20);
return 0;
}
3)
int main(int argc,char** argv)
{
MyFun(10);
FunP=&MyFun;
FunP(20);
return 0;
}
4)
int main(int argc,char** argv)
{
(*MyFun)(10);
FunP=MyFun;
(*FunP)(20);
return 0;
}
我当时肉眼观察后,认为除了代码1能正确执行之外别的编译会报语法错。但是在vc2005中四段代码都能正确执行,大感意外,实在想不出有什么合理解释,所以拿出来跟大家讨论一下。
搜索更多相关主题的帖子: int MyFun FunP 指针 函数 
2008-05-25 22:46
StarWing83
Rank: 8Rank: 8
来 自:仙女座大星云
等 级:贵宾
威 望:19
帖 子:3951
专家分:748
注 册:2007-11-16
收藏
得分:0 
合理解释很简单——对于函数指针,你加多少*和&都是正常的……我见过有人这么写的:
int (******************************************************************************func)(int);
然后运行都正常……

专心编程………
飞燕算法初级群:3996098
我的Blog
2008-05-26 14:07
hewenhao
Rank: 1
等 级:新手上路
帖 子:46
专家分:0
注 册:2007-1-10
收藏
得分:0 
原来如此
看来真的不能用常理来解释了啊,恩。

2008-05-26 23:16
快速回复:一道很有意思的关于函数指针的题目
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016091 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved