为了账号安全,请及时绑定邮箱和手机立即绑定

以下这段代码是什么意思,为什么答案是110?

以下这段代码是什么意思,为什么答案是110?

C++
呼如林 2022-06-18 15:11:08
typedef int(FUNC1)(int in); typedef int(FUNC2) (int*,int*,int*); void show(FUNC2 fun,int arg1, int*arg2) { INCp=&inc; int temp =p(arg1); fun(&temp,&arg1, arg2); printf("%d\n",*arg2); } main() { int a; show(multi,10,&a); return 0; }
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

用来演示指向函数的指针。
//
自增函数:将数值a加1并返回结果
int
inc(int
a)
{
return(++a);
}
//
乘法函数:用来将a,b两指针指向的数值相乘,并将结果存于c指针指向的空间
int
multi(int*a,int*b,int*c)
{
return(*c=*a**b);
}
typedef
int(FUNC1)(int
in);
//定义一个指定参数类型的函数指针类型FUNC1
typedef
int(FUNC2)
(int*,int*,int*);
//
定义三个指定参数类型的函数指针类型FUNC2
void
show(FUNC2
fun,int
arg1,
int*arg2)
{
FINC1
p=&inc;
//
定义指向1个参数的函数指针p,并指向自增函数inc
int
temp
=p(arg1);
//
调用处增函数p将arg1数值自增,并把结果存于temp,为10+1=11
fun(&temp,&arg1,
arg2);
//
调用传入的函数指针(实为multi),将temp,arg1数值相乘,结果存于arg2指向的空间,为10*11=110
printf("%d\n",*arg2);
//
打印乘法结果110
}
main()
{
int
a;
//
定义变量a用于存储结果
show(multi,10,&a);
//
调用函数show并传入三个参数:函数指针multi,
数值10,结果变量a的地址
return
0;
}


查看完整回答
反对 回复 2022-06-20
  • 1 回答
  • 0 关注
  • 127 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号