函数指针调用与函数调用区别(辨析)

函数调用:

#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)() ;                                               //进行调用

}

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值