C语言_函数指针数组的应用

下面这个例子是函数指针数组的应用场景:
函数指针数组优点:容易扩展。假如在下面的场景中,要进行扩充一个函数(比如求一个数的三次方),只需要新增一个函数,并加入到函数指针数组中。

#define _CRT_SECURE_NO_WARNINGS
#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;
}

int squ(int a)
{
	return a*a;
}

int main1(void)
{
	int  i = 0, ret = 0;
	int da1 = 0, da2 = 0;
	//函数参数不一致,所以不要指定任何形参
	int(*funp[5])() = { add, sub, mul, div, squ };

	while (1)
	{
		printf("0. add\n");
		printf("1. sub\n");
		printf("2. mul\n");
		printf("3. div\n");
		printf("4. square\n"); //平方
		printf("select\n");

		scanf("%d", &i);

		if (i == 4)
		{
			printf("input data1\n");
			scanf("%d", &da1);

			ret = funp[i](da1);  //通过函数指针,调用对应函数

		}
		else
		{
			printf("input data1, data2\n");
			scanf("%d %d", &da1, &da2);

			ret = funp[i](da1, da2);
		}

		printf("ret = %d\n", ret);

	}

// 不应用函数指针数组的情况。
#if 0 
	switch (i)
	{
	case 0:
		ret = add(da1, da2);
		break;
	case 1:
		ret = sub(da1, da2);
		break;
	case 2:
		ret = mul(da1, da2);
		break;
	case 3:
		ret = div(da1, da2);
		break;
	case 4:
		ret = squ(da1);
		break;
	}

#endif
	system("pause");
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值