函数指针
函数指针:顾名思义是一个指针(一个指向函数的指针)
定义的格式:int (*p)() 【第二个括号里面写参数,个数根据情况定义】
下面是一个简单的计算器程序(加减乘除),里面运用了函数指针;
#include<stdio.h>
void menu()//定义菜单函数界面
{
printf("\n------------------------------------------------\n");
printf("------------------------------------------------");
printf("\n输入1=>加法器\t输入2=>减法\n输入3=>乘法\t输入4=>除法\n\t输入0=>退出程序\n");
printf("------------------------------------------------");
printf("\n------------------------------------------------\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 ret = 0;
int x = 0;
int y = 0;
printf("请输入两个数");
scanf_s("%d %d", &x, &y); //输入
ret = (*pf)( x , y );
printf("结果为%d", ret);
}
int main()
{
int intput = 0;
do
{
menu();
printf("请选择:");
scanf_s("%d", &intput);
switch (intput)
{
case 1:
calc(Add);
break;
case 2:
calc(Sub);
break;
case 3:
calc(Mul);
break;
case 4:
calc(Div);
break;
case 0:
printf("退出计算器\t下次再见!!!");
break;
default:
printf("输入不合法。");
break;
}
} while (intput);
return 0;
}
里面运用了函数指针,使得函数冗杂的程序被简化。
冗杂的程序示例如下
多次极度相似的代码,看起来十分冗杂
还可以使用函数指针数组进行优化代码,使其更加简洁,且便于以后添加此简单计算器的功能。
请移步下一篇文章。