这段代码使用了函数指针,实现了根据用户输入的命令选择不同的操作,并对两个数进行相应的处理。以下是代码的总结:
-
getMax
,getSmall
和getSum
函数分别用于获取两个数中的较大值、较小值和它们的和。 -
dataHandler
函数接收两个数据data
和data2
,以及一个函数指针p
,用于指定对数据进行的操作。函数内部通过调用函数指针来实现对数据的处理,并返回处理结果。 -
在
main
函数中,定义了两个整型变量a
和b
,以及一个整型变量cmd
,用于存储用户输入的命令。同时定义了一个函数指针pfunc
,用于存储根据用户命令选择的函数地址。 -
使用
scanf
函数获取用户输入的命令,并根据用户输入的命令选择对应的函数,并将函数地址赋值给函数指针pfunc
。 -
调用
dataHandler
函数,将a
、b
和pfunc
作为参数传递进去,获取对应操作的结果。 -
最后,输出处理结果。
这段代码的主要功能是根据用户输入的命令选择不同的操作,并对两个数进行相应的处理,然后输出结果。通过函数指针的方式
#include <stdio.h>int getMax(int x,int y)
{int max;max = x>y?x:y;return max;
}int getSmall(int x,int y)
{int small;small = x<y?x:y;return small;
}int getSum(int x,int y)
{int sum=0;sum = x+y;return sum;
}int dataHandler(int data,int data2,int (*p)(int ,int ))
{int ret;ret = (*p)(data,data2);return ret;
}int main()
{int a=10;int b=20;int cmd;int (*pfunc)(int,int);int result;printf("请输入1(输出大者)、2(输出小者)、3(输出两者之和)\n");scanf("%d",&cmd);switch(cmd){case 1:pfunc = getMax;break;case 2:pfunc = getSmall;break;case 3:pfunc = getSum;break;default:printf("输入错误,请重新输入1或2或3");break;}result = dataHandler(a,b,pfunc);printf("%d",result);return 0;
}