标题:C语言的一道单选题 求解+解释
只看楼主
wujiandao
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2009-7-12
结帖率:83.33%
已结贴  问题点数:20 回复次数:4 
C语言的一道单选题 求解+解释
char fun(char*);
main()
{
char *s="one",a[5]={0},(*f1)()=fun,ch;
.....
}
以下选项中对函数fun的正确调用语句是(A)
A.(*f1)(a);   B.*f1(*s);  C.fun(&a);  D.ch=*f1(s);
搜索更多相关主题的帖子: C语言 选题 求解 解释 
2009-07-14 22:02
yt414204458
Rank: 2
等 级:论坛游民
帖 子:260
专家分:55
注 册:2008-3-1
得分:0 
答案 是不是D啊,我有很久没看过C了,还有点影像
对应就OK了

一切从爱C开始
2009-07-14 22:10
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
得分:0 
选A吧
2009-07-14 23:12
gavinchou
Rank: 2
等 级:论坛游民
威 望:1
帖 子:118
专家分:61
注 册:2009-2-11
得分:20 
应该是A啦,因为 fun() 的参数类型是指针,所以B,C错。又因为 fun()的返回值是char,所以D错。
A呢,就是一个函数指针,(*f1) 表示的就是 fun ,因为前面有了 (*f1)()=fun  这一赋值句。
这样讲应该明白吧?
2009-07-14 23:13
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
得分:0 
那是在定义处赋的值,相当于指针 char *p = "...", (*f1)()就是 *p, fun就是"..."这个的首地址,
(*f1)()就是*p,取它们的值,也就是fun或"...",跳到该地址取值,不同的是(*f1)()跳到了代码段,*p跳到了数据段;
像在打印的时候可以 ("%s", p),而函数同样可以f1(a);
2009-07-14 23:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-279577-1-1.html




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

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