亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

以下這段代碼是什么意思,為什么答案是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 關注
  • 116 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號