了解更多知识请点我:学习C语言之路(汇总篇)
袖珍计算器-函数指针(C语言实现)
需求介绍介绍
在实际的开发当中,经常会使用加减乘除开方等各种各样的使用
基础内容介绍
typedef int (*函数名)(参数一,参数二...);
解读:
- 以上定义了一个函数指针(本质上是一个指针,它返回指向int 函数的指针类型)
- typedef 关键字修饰,函数名可以替代函数。
举例:typedef int (*PF)(int a);
PF = int ( * )(int a).
基础版
#include<stdio.h>
int add(int a, int b)
{
printf("addition function\n");
return a + b;
}
int sub(int a, int b)
{
printf("subtration function\n");
return a - b;
}
int main(void)
{
typedef int (*PF)(int, int);
PF a;
a = add;
printf("addition result:%d\n", a(5, 8));
a = sub;
printf("subtration result:%d\n", a(8, 5));
return 0;
}
参数详细说明
主函数mian()中将函数add的地址赋值给a,()的话就是执行相关函数
升级版
加减乘除
#include<stdio.h>
typedef int (*Operation)(int a,int b);
int add(int a, int b)
{
printf("addition function\n");
return a + b;
}
int sub(int a, int b)
{
printf("subtration function\n");
return a - b;
}
int mul(int a,int b)
{
printf("multiply function\n");
return a*b;
}
int div(int a,int b)
{
printf("divide function\n");
return a/b;
}
回调函数
Operation getOperation(char c)
{
switch(c)
{
case '+':
return add;
case '-':
return sub;
case '*':
return mul;
case '/':
return div;
}
}
主函数
int main(void)
{
int num1,num2;
char c1;
int result;
printf("pleace input num1:num2:c1\n");
scanf("%d,%d,%c",&num1,&num2,&c1);
Operation pf=getOperation(c1);
printf("result is %d\n:",pf(num1,num2));
return 0;
}