前言
你好,我是程序猿爱打拳。在我的上篇博文中我们学到了函数指针以及函数指针数组的用法,这篇博文我将延申上一篇博客来讲解回调函数的用法。当然,如果你还不懂函数指针和函数指针数组的用法可以观看这篇文章。函数指针https://blog.csdn.net/weixin_64916311/article/details/129213705?spm=1001.2014.3001.5501
回调函数,是在函数指针的基础上进行修改的。什么意思呢:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应函数指针的用法。回调函数switch语句case语句实现四则运算器:
#include<stdio.h>
int Add(int x, int y)
{
return x + y;
}
int Sub(int x, int y)
{
return x - y;
}
int Mul(int x, int y)
{
return x * y;
}
int Div(int x, int y)
{
return x / y;
}
void Menu()
{
printf("========================\n");
printf("==== 1.Add 2.Sub ====\n");
printf("==== 3.Mul 4.Div ====\n");
printf("==== 0.Exit ====\n");
printf("========================\n");
}
void calc(int (*p)(int,int))
{
int x = 0;
int y = 0;
int ret = 0;
printf("请输入两个整数:>");
scanf("%d %d", &x, &y);
ret = (*p)(x, y);
printf("结果为:%d\n", ret);
}
int main()
{
int input = 0;
do
{
Menu();
printf("请输入你的选项:>");
scanf("%d", &input);
switch (input)
{
case 0:
printf("你已退出程序!");
break;
case 1:
calc(Add);
break;
case 2:
calc(Sub);
break;
case 3:
calc(Mul);
break;
case 4:
calc(Div);
break;
default:
printf("请输入正确的选项!\n");
}
} while (input);
return 0;
}
实现效果: