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

2024-11-13 12:06:41
推荐回答(4个)
回答1:

拆开看,后半句是int (*pf)(int) = fun6;
这是函数指针声明规则,具体为什么呢,是c语言中的规定了
指向有一个int参数,返回一个int值的函数

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

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

函数指针只不过是多一步调用操作而已,另外你可以试试cout<

回答2:

int (*pf)(int)这是定义了一个函数指针,此函数有一个int型的参数且返回int数值,函数原型应该是int fun(int arg)这样.A和B明显是错的,C和D主要就是个运算符优先级的问题,所以要选C.

回答3:

拆开看,后半句是int
(*pf)(int)
=
fun6;
这是函数指针声明规则,具体为什么呢,是c语言中的规定了
指向有一个int参数,返回一个int值的函数
c中的*pf取出指向的函数fun6,即(*pf)相当于fun6,后面就不用说了
cout<<(*pf)
(256);
==>
cout<
评论
0
0
加载更多

回答4:

同求解,我用编译器试了一下,声明是报错的。编译器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的区别就是个括号的问题,这里应主要优先级的问题
(以上是我的理解,新手上道,求评论)