書式#include <stdio.hに>
する#include <malloc.hを>
/ *********************************** *****
*函数指针结构体
*************************************** /
構造体_OPのtypedef
{
フロート(* p_add)(フロート、フロート)。
フロート(* p_sub)(フロート、フロート);
フロート(* p_mul)(フロート、フロート);
フロート(* p_div)(フロート、フロート);
} OP。
/ ****************************************
*加减乘除函数
**** *********************************** /
フロートADD(フロートB、フロート)
{
+ bを返します;
}
フロートSUB(フロートBフロート)
{
返す- B。
}
フロートMUL(フロートBフロート)
{
* bを返します。
}
フロートDIV(フロートBフロート)
{
/ Bを返します。
}
/ ****************************************
*初始化函数指针
**** *********************************** /
空隙init_op(OPの*のOP)
{
OP-> p_add = ADD ;
OP-> p_sub = SUB;
OP-> p_mul =&MUL。
OP-> p_div =&DIV。
}
/ ****************************************
*库函数
***** ********************************** /
()、フロートB、フロート(* op_funcフロート(フロートadd_sub_mul_divフロート、フロート))
{
リターン(* op_func)(B)
}
int型のmain(int型ARGC、チャー*のARGV [])
{
OP * OP =(OP *)はmalloc(はsizeof(OP))。
init_op(OP);
/ *直接ポインタコール機能を機能する* /
のprintf(「ADD =%F、SUB =%F、MUL =%F、DIV %F = \ N-」、
(OP-> P_ADD)(1.3、2.2)、
(オペアンプ- *> P_sub)(1.3、2.2)、
(OP-> p_mul)(1.3、2.2)、
(オペアンプ- *> p_div )(1.3、2.2));
/ *コールバック関数* /呼び出し
のprintf( "ADD =%F、SUB =%F、MUL =%F、DIV =%F \ N-"、
add_sub_mul_div(1.3、2.2、ADD)、
add_sub_mul_div(1.3、2.2、SUB)、
add_sub_mul_div(1.3、2.2、MUL)、
add_sub_mul_div(1.3、2.2、DIV));
戻り0;
}