C语言之函数指针

目录

前言

函数指针是指向函数的指针变量,首先是指针变量,其次是指向函数入口的指针,即为函数指针。


一、指针函数与函数指针

指针函数,指的是返回值为指针的函数。eg:int *getmax(int a,int b) return p;

函数指针,指的是存放函数入口参数的指针变量。 eg: int (*p)(int a,int b) p=getmax;

int func(int x); /* 声明一个函数 */

int (*f) (int x); /* 声明一个函数指针 */

int *func(int a,int b)/* 声明一个指针函数 */

f=func; /* 将func函数的首地址赋给指针f */

或者使用下面的方法将函数地址赋给函数指针:

f = &func;

二、使用步骤

 1.定义函数指针变量2

 2.给指针传函数入口参数3

 3.调用函数指针。

#include <stdio.h>

int getmax(int date1,int date2)
{
   return date1>date2?date1:date2;
}
int getmin(int date1,int date2)
{
   return date1>date2?date2:date1;
}
int getsum(int date1,int date2)
{
   return (date1+date2);
}
int datehander(int date1,int date2,int (*pfunc)(int date1,int date2))         
{
int ret=0;
ret = (*pfunc)(date1,date2);               //3.调用函数指针解引用
return ret;

}

int main()
{
    
    int date1=100;
    int date2=500;
    int cmd=0;
    int ret=0;
    int (*pfunc)(int date1,int date2);      //1.定义函数指针变量
    printf("请输入1求最大2求最小3求和\n");
    scanf("%d",&cmd);
   switch (cmd)
   {                                        //2.给函数指针赋入口参数
   case 1:
      pfunc=getmax;
       break;
   case 2:
       pfunc=getmin;
       break;
   case 3:
       pfunc=getsum;
       break;
   
   default:
       puts("输入错误请重新输入");
       break;
   }
   ret=datehander(date1,date2,pfunc);

   printf("%d\n",ret);
    return 0;
}

总结

1.函数指针形参可有可无,作为函数入口。

2.函数指针不可以偏移运算  p++ p--。

3.区分函数指针和指针函数。

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值