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上写内容,这里只是举两个简单的使用例子,主要是为了记录怎么使用函数指针,有什么不好的地方请各位大佬指点。