#/*-------------------回调函数--------------------------*/
#include <stdio.h>
#include <stdlib.h>
typedef struct __OP{ //初始化函数指针
float (*P_ADD)(float ,float);
float (*P_SUB)(float ,float);
float (*P_MUT)(float ,float);
float (*P_DIV)(float ,float);
}OP;
float ADD(float a ,float b ){ //加法
return a+b;
}
float SUB(float a ,float b ){ //减法
return a-b;
}
float MUT(float a ,float b ){ //乘法
return a*b;
}
float DIV(float a ,float b ){ //除法
return a/b;
}
void
op_init(OP *op) // 函数指针 指向函数的地址
{
op->P_ADD = ADD;
op->P_SUB = SUB;
op->P_MUT = MUT;
op->P_DIV = DIV;
}
float
ADD_SUB_MUT_DIV(float a ,float b ,float (*io_fuc)(float ,float)) //函数回调
{
return (*io_fuc)(a,b);
}
int main(){
OP *op = (OP*)malloc(sizeof(OP));
op_init(op);
//输出函数指针的运算
printf("ADD = %f SUB =%f MUT = %f DIV = %f \n"
,op->P_ADD(1,2)
,op->P_SUB(1,2)
,op->P_MUT(1,2)
, op->P_DIV(1,2));
//输出回调函数的运算
printf("ADD = %f SUB =%f MUT = %f DIV = %f" ,ADD_SUB_MUT_DIV(1,2,ADD)
,ADD_SUB_MUT_DIV(1,2,SUB)
,ADD_SUB_MUT_DIV(1,2,MUT)
,ADD_SUB_MUT_DIV(1,2,DIV));
}
C语言学习笔记 -回调函数
最新推荐文章于 2024-04-17 03:18:30 发布