C语言学习—使用函数指针替代switch...case...

C语言学习——使用函数指针替代switch...case...


使用函数指针实现switch…case…或if…else if…else…。

案例一(函数指针数组):输入 0 ~ 6 表示 星期日~星期六 ,打印出对应的星期几

#include <stdio.h>

void Sun_do(void) {printf("星期日");}
void Mon_do(void) {printf("星期一");}
void Tue_do(void) {printf("星期二");}
void Wed_do(void) {printf("星期三");}
void Thu_do(void) {printf("星期四");}
void Fri_do(void) {printf("星期五");}
void Sat_do(void) {printf("星期六");}

void (* Activity[])(void)={
	Sun_do,
	Mon_do,
	Tue_do,
	Wed_do,
	Thu_do,
	Fri_do,
	Sat_do,
};

void main (void)
{
	while(1)
	{
		int weekday;
		printf("请输入星期几(0~1):");
		scanf("%d", &weekday);
		Activity[weekday]();
	}
}

案例二(定义在结构体中):先输入运算方式(0表示加,1表示减,2表示乘),在输入两个参数

#include <stdio.h>

typedef struct
{
    int (*Operation)(int, int); 
}Type_T;

int add_func(int num1, int num2)
{
	int r;
	r = num1 + num2;
	printf("结果为:%d\r\n", r);
	return r;
}

int sub_func(int num1, int num2)
{
	int r;
	r = num1 - num2;
	printf("结果为:%d\r\n", r);
	return r;
}

int mul_func(int num1, int num2)
{
	int r;
	r = num1 * num2;
	printf("结果为:%d\r\n", r);
	return r;
}

void main (void)
{
	Type_T op[3];

	op[0].Operation = add_func;
	op[1].Operation = sub_func;
	op[2].Operation = mul_func;

	while(1)
	{
		int type, res;
		printf("请输入要进行的运算:");
		scanf("%d", &type);
		res = op[type].Operation(2, 3);
		printf("返回值为:%d\r\n", r);
	}
}

这是我第一次在CSDN上写内容,这里只是举两个简单的使用例子,主要是为了记录怎么使用函数指针,有什么不好的地方请各位大佬指点。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值