衡阳网站建设公司,三合一网站开发,高端响应式网站开发,建设网站一般流程1.回调函数是什么#xff1f;
回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针#xff08;地址#xff09;作为参数传递给另⼀个函数#xff0c;当这个指针被用来调用其所指向的函数 时#xff0c;被调用的函数就是回调函数。回调函数不是由该函数的实现方…1.回调函数是什么
回调函数就是⼀个通过函数指针调用的函数。 如果你把函数的指针地址作为参数传递给另⼀个函数当这个指针被用来调用其所指向的函数 时被调用的函数就是回调函数。回调函数不是由该函数的实现方直接调用而是在特定的事件或条件发⽣时由另外的⼀方调用的用于对该事件或条件进⾏响应。 只有调⽤函数的逻辑是有差异的我们可以把调⽤的函数的地址以参数的形式传递过去使⽤函数指针接收函数指针指向什么函数就调⽤什么函数这⾥其实使⽤的就是回调函数的功能。
接下来是一个简易计算器利用回调函数
#include stdio.h
int add(int a, int b)
{return a b;
}
int sub(int a, int b)
{return a - b;
}
int mul(int a, int b)
{return a * b;
}
int div(int a, int b)
{return a / b;
}void calc(int(*pf)(int, int))
{int x, y;int ret 0;printf(输入操作数);scanf(%d %d, x, y);ret pf(x, y);printf(ret %d\n, ret);
}int main()
{int input 1;do{printf(*************************\n);printf( 1:add 2:sub \n);printf( 3:mul 4:div \n);printf(********0. exit *********\n);printf(请选择);scanf(%d, input);switch (input){case 1:calc(add);break;case 2:calc(sub);break;case 3:calc(mul);break;case 4:calc(div);break;case 0:printf(退出程序\n);break;default:printf(选择错误\n);break;}} while (input);return 0;
}图 下面是改造后的方法利用数组函数进行优化方便减少冗余
//加法
int add(int a, int b)
{return a b;
}
//减法
int sub(int a, int b)
{return a - b;
}
//乘法
int mul(int a, int b)
{return a * b;
}
//除法
int div(int a, int b)
{return a / b;
}
//菜单
void menu()
{printf(*****************************\n);printf(********1.add 2.sub********\n);printf(********3.mul 4.div********\n);printf(******** 0.exit **********\n);printf(*****************************\n);
}
int main()
{int* (*pfArr[])(int, int) {NULL,add ,sub,mul,div};//函数指针数组存放函数int input 0;int x 0;int y 0;int ret 0;do {menu();printf(请选择);scanf(%d, input);if (input 1 input 4) {printf(请输入两个操作数:);scanf(%d %d, x, y);ret pfArr[input](x, y);//这里进行调用函数数组里面的函数printf(%d\n,ret);}else if(input0){printf(退出\n);}else {printf(选择错误重新选择);}} while (input);return 0;
}