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;
}
- 1 回答
- 0 關注
- 116 瀏覽
添加回答
舉報
0/150
提交
取消