函数调用:
#include<stdio.h>
int getmax(int date1,int date2)
{
if(date1>date2)
{
printf("%d\n",date1);
}
if(date1<date2)
{
printf("%d\n",date2);
}
}
int getmin(int date1,int date2)
{
if(date1>date2)
{
printf("%d\n",date2);
}
if(date1<date2)
{
printf("%d\n",date1);
}
}
int getsum(int date1,int date2)
{
int date;
date=date1+date2;
printf("%d\n",date);
}
int main()
{ int date1=10;
int date2=20;
int cmd;
scanf("%d",&cmd);
int p;
switch(cmd)
{
case 1:
p=getmax(date1,date2);
break;
case 2:
p=getmin(date1,date2);
break;
case 3:
p=getsum(date1,date2);
break;
default:
puts("输入错误");
}
return 0;
}
函数指针调用:
#include<stdio.h> //函数指针的回调
int getmax(int date1,int date2)
{
if(date1>date2)
{
printf("%d\n",date1);
}
if(date1<date2)
{
printf("%d\n",date2);
}
}
int getmin(int date1,int date2)
{
if(date1>date2)
{
printf("%d\n",date2);
}
if(date1<date2)
{
printf("%d\n",date1);
} //可用三目运算符比较简便
}
int getsum(int date1,int date2)
{
int date;
date=date1+date2;
printf("%d\n",date);
}
int handle(int date1,int date2,int (*p)(int date1,int date2))
{
int ret;
(*p)(date1,date2); //调用函数
return ret;
}
int main()
{ int date1=10;
int date2=20;
int cmd;
int ret;
scanf("%d",&cmd);
int (*p)(int date1,int date2); //调用函数都是此类型 getmax
switch(cmd) //取1为最大值 取2为最小值 取3为两数之和
{
case 1:
p=getmax;
break;
case 2:
p=getmin;
break;
case 3:
p=getsum;
break; //指向函数
default:
puts("输入错误");
}
ret=handle(date1,date2,p);
return 0;
}
总体思路:
Int haha()
main()
{
Int (*p)(); // *p取代haha地址 类型一样
p=haha; //指向函数
(*p)() ; //进行调用
}