介绍一个袖珍计算器-函数指针(C语言实现)

了解更多知识请点我:学习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; 
}

函数功能详细讲解


猜你喜欢

转载自blog.csdn.net/qq_38179373/article/details/107461548
今日推荐