1.初识回调函数,使用函数指针实现计算器功能
当代码冗余可尝试回调函数//简易计算器
//+ - * / & | ^ % << >>
#include <stdio.h>
void menu()
{
printf("************* Menu **********\n");
printf("************* 1.Add 2.Sub 3.Mml 4.Div **********\n");
printf("************* 5.AND 6.OR 7.XOP 8.Del **********\n");
printf("************* 9.LSO 10.RSO **********\n");
printf("************* 0.Exit **********\n");
}
2.函数功能面板
long long Add(long long x, long long y)
{
return x + y;
}
long long Sub(long long x, long long y)
{
return x - y;
}
long long Mul(long long x, long long y)
{
return x * y;
}
double Div(double x, double y)
{
return x / y;
}
long long AND(long long x, long long y)
{
return x & y;
}
long long OR(long long x, long long y)
{
return x | y;
}
long long XOR(long long x, long long y)
{
return x ^ y;
}
long long Del(long long x, long long y)
{
return x % y;
}
long long LSO(long long x, long long y)
{
return x << y;
}
long long RSO(long long x, long long y)
{
return x >> y;
}
初识回调函数
void colc1(long long (*pf)(long long, long long))//传什么用什么接:传递函数地址,用函数指针接收,函数返回长整型,用长整型接收,
{
printf("请输入两个操作数\n");
long long x, y;
scanf("%lld %lld", &x, &y);
long long ret = (*pf)(x, y);
printf("%lld\n", ret);
}
void colc2(double (*pf)(double, double))
{
printf("请输入两个操作数\n");
double x, y;
scanf("%lf %lf", &x, &y);
double ret = (*pf)(x, y);
printf("%lf\n", ret);
}
3.主函数面板
int main()
{
int input = 0;
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
colc1(Add);
break;
case 2:
colc1(Sub);
break;
case 3:
colc1(Mul);
break;
case 4:
colc2(Div);
break;
case 5:
colc1(AND);
break;
case 6:
colc1(OR);
break;
case 7:
colc1(XOR);
break;
case 8:
colc1(Del);
break;
case 9:
colc1(LSO);
break;
case 10:
colc1(RSO);
break;
default:
printf("选择错误,无此功能\n");
break;
}
} while (input);
return 0;
}
!!!体验函数指针的用法,初识回调函数