这段代码使用了函数指针,实现了根据用户输入的命令选择不同的操作,并对两个数进行相应的处理。以下是代码的总结:
-
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;
}