0
点赞
收藏
分享

微信扫一扫

初识回调函数

他说Python 2022-01-20 阅读 17

序言

回调函数

实现回调函数

普通计算器

void menu()
{
	printf("**********************************\n");
	printf("*****  1. add     2. sub     *****\n");
	printf("*****  3. mul     4. div     *****\n");
	printf("*****  0. exit               *****\n");
	printf("**********************************\n");
}

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;
}

int main()
{
	int input = 0;
	do
	{
		int x = 0;
		int y = 0;
		int ret = 0;
		menu();
		printf("请选择:> ");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("请输入两个操作数: ");
			scanf("%d %d", &x, &y);
			ret = Add(x, y);
			printf("sum = %d\n", ret);
			break;

		case 2:
			printf("请输入两个操作数: ");
			scanf("%d %d", &x, &y);
			ret = Sub(x, y);
			printf("Sub = %d\n", ret);
			break;

		case 3:
			printf("请输入两个操作数: ");
			scanf("%d %d", &x, &y);
			ret = Mul(x, y);
			printf("Mul = %d\n", ret);
			break;

		case 4:
			printf("请输入两个操作数: ");
			scanf("%d %d", &x, &y);
			ret = Div(x, y);
			printf("Div = %d\n", ret);
			break;

		case 0:
			printf("退出计算器\n");
			break;
		default:
			printf("选择错误\n");
			break;

		}
	} while (input);

	return 0;
}

回调函数实现计算器

void menu()
{
	printf("**********************************\n");
	printf("*****  1. add     2. sub     *****\n");
	printf("*****  3. mul     4. div     *****\n");
	printf("*****  0. exit               *****\n");
	printf("**********************************\n");
}

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 calc(int (*pf)(int, int))  //函数指针
{
	int x = 0;
	int y = 0;
	int ret = 0;
	printf("输入2个操作数:>");
	scanf("%d %d", &x, &y);
	ret = pf(x, y);
	printf("ret = %d\n", ret);
}

int main()
{
	int input = 0;

	do
	{
		menu();
		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;
}
举报

相关推荐

0 条评论