一道C++选择题:int fun6(int) , (*pf)(int) = fun6 求讲解

有声明intfun6(int),(*pf)(int)=fun6;下面选项中,正确的调用是?Ainta=15;intn=fun6(&a);B.inta=15;cout<<(... 有声明 int fun6(int) , (*pf)(int) = fun6;

下面选项中,正确的调用是?

A int a=15; int n=fun6(&a);
B. int a=15; cout<<(&pf) (a);
C. cout<<(*pf) (256);
D. cout<<*pf(256);

那个声明后半部分是什么意思啊 我看不懂 答案选C 为什么?
展开
 我来答
木有想到GK5ym
2018-01-12 · TA获得超过208个赞
知道小有建树答主
回答量:207
采纳率:90%
帮助的人:125万
展开全部
拆开看,后半句是int (*pf)(int) = fun6;
这是函数指针声明规则,具体为什么呢,是c语言中的规定了
指向有一个int参数,返回一个int值的函数

c中的*pf取出指向的函数fun6,即(*pf)相当于fun6,后面就不用说了

cout<<(*pf) (256); ==> cout<<fun6(256);

这其实和普通指针操作一样的
如int a=10, *p=&a;
count <<(*p); // 取出p指向的内容,a

函数指针只不过是多一步调用操作而已,另外你可以试试cout<<pf (256); 也是正确的,这样pf完全是可以当成一个函数的别名的
百度网友349d18b
2013-03-05 · TA获得超过444个赞
知道小有建树答主
回答量:571
采纳率:50%
帮助的人:371万
展开全部
int (*pf)(int)这是定义了一个函数指针,此函数有一个int型的参数且返回int数值,函数原型应该是int fun(int arg)这样.A和B明显是错的,C和D主要就是个运算符优先级的问题,所以要选C.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
泣芙吉春
2019-05-04 · TA获得超过3.8万个赞
知道大有可为答主
回答量:1.4万
采纳率:27%
帮助的人:716万
展开全部
拆开看,后半句是int
(*pf)(int)
=
fun6;
这是函数指针声明规则,具体为什么呢,是c语言中的规定了
指向有一个int参数,返回一个int值的函数
c中的*pf取出指向的函数fun6,即(*pf)相当于fun6,后面就不用说了
cout<<(*pf)
(256);
==>
cout<
评论
0
0
加载更多
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
玩笑求问
2013-03-05 · TA获得超过113个赞
知道答主
回答量:132
采纳率:100%
帮助的人:84.3万
展开全部
同求解,我用编译器试了一下,声明是报错的。编译器visual C++ 6.0
error LNK2001: unresolved external symbol "int __cdecl fun6(int)" (?fun6@@YAHH@Z)
我的理解是这样:int fun6(int)是个函数,(*pf)(int)=fun6估计是个函数地址传递,新入一个接口。传递类型是int型,所以A不可以&a是个地址
B的(&pf)(a)应该也不可以,应该是(*pf)(a)
C和D的区别就是个括号的问题,这里应主要优先级的问题
(以上是我的理解,新手上道,求评论)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式