牛客网C/C++专项练习01

若有以下说明和定义,在必要的赋值之后,对fun函数的正确调用语句
是()。

int fun (int *c)  {}
void main()
{
int (*a)(int*)=fun,*b(),w[10],c;}

A. a=a(w);
B. (*a)(&c);
C. b=*b(w);
D. fun(b);

解析:int fun (int c) { … }是一个返回值为int,参数为指针的函数
int (a)(int)=fun:函数指针;
A:a(w)参数传入w,w为数组,会被编译器优化为指针,没有毛病儿。但用a来接函数的返回值,a是一个指针,而返回值为int,二者类型不匹配。
B:c为int类型,&c则为int * 类型,类型匹配,是正确的。这里要着重说明一下,调用的话a(&c);即可,前面加了有
,其实编译器都会给优化掉,即使是**********a(&c)仍然能够正确调用。
C:int * b()这个很具有疑惑性 它并不是函数指针,而是一个返回值为int * 型,无输入参数,而且名为b的函数声明明。显然C错误,函数指针要这么写int (*b)();再者b也不能作为返回值,不匹配。
D:fun函数的参数是int * 类型,b显然不是。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值