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

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; }

呼如林
浏览 128回答 1
1回答

慕沐林林

用来演示指向函数的指针。//自增函数:将数值a加1并返回结果intinc(inta){return(++a);}//乘法函数:用来将a,b两指针指向的数值相乘,并将结果存于c指针指向的空间intmulti(int*a,int*b,int*c){return(*c=*a**b);}typedefint(FUNC1)(intin);//定义一个指定参数类型的函数指针类型FUNC1typedefint(FUNC2)(int*,int*,int*);//定义三个指定参数类型的函数指针类型FUNC2voidshow(FUNC2fun,intarg1,int*arg2){FINC1p=&inc;//定义指向1个参数的函数指针p,并指向自增函数incinttemp=p(arg1);//调用处增函数p将arg1数值自增,并把结果存于temp,为10+1=11fun(&temp,&arg1,arg2);//调用传入的函数指针(实为multi),将temp,arg1数值相乘,结果存于arg2指向的空间,为10*11=110printf("%d\n",*arg2);//打印乘法结果110}main(){inta;//定义变量a用于存储结果show(multi,10,&a);//调用函数show并传入三个参数:函数指针multi,数值10,结果变量a的地址return0;}
打开App,查看更多内容
随时随地看视频慕课网APP