一道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 为什么? 展开
下面选项中,正确的调用是?
A int a=15; int n=fun6(&a);
B. int a=15; cout<<(&pf) (a);
C. cout<<(*pf) (256);
D. cout<<*pf(256);
那个声明后半部分是什么意思啊 我看不懂 答案选C 为什么? 展开
4个回答
展开全部
拆开看,后半句是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完全是可以当成一个函数的别名的
这是函数指针声明规则,具体为什么呢,是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完全是可以当成一个函数的别名的
展开全部
拆开看,后半句是int
(*pf)(int)
=
fun6;
这是函数指针声明规则,具体为什么呢,是c语言中的规定了
指向有一个int参数,返回一个int值的函数
c中的*pf取出指向的函数fun6,即(*pf)相当于fun6,后面就不用说了
cout<<(*pf)
(256);
==>
cout<
评论
0
0
加载更多
(*pf)(int)
=
fun6;
这是函数指针声明规则,具体为什么呢,是c语言中的规定了
指向有一个int参数,返回一个int值的函数
c中的*pf取出指向的函数fun6,即(*pf)相当于fun6,后面就不用说了
cout<<(*pf)
(256);
==>
cout<
评论
0
0
加载更多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同求解,我用编译器试了一下,声明是报错的。编译器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的区别就是个括号的问题,这里应主要优先级的问题
(以上是我的理解,新手上道,求评论)
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的区别就是个括号的问题,这里应主要优先级的问题
(以上是我的理解,新手上道,求评论)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询