函数指针

指向函数的指针是一个指针变量,这个指针比较特殊,它指向一个函数。一个函数的函数名市一个指针,它指向函数的代码。函数的调用可以通过指向函数的指针来调用。

指向函数的指针其定义的一般形式为:类型名  (*指针变量名) ();

例如:int    (*p)    (int i,    int j);

p是一个指针,它指向的一个函数,这个函数有两个整型参数,返回类型为int。我们注意到 p 首先和 * 结合,表明 p 是一个指针。然后再与 () 结合,表明它指向的是一个函数。指向函数的指针也成为函数指针,下面的示例实现了指向函数的指针的功能。

#include    <stdio.h>
#define    GET_MAX    0
#define    GET_MIN    1
int get_max(int i,int j)
{
    return  i>j?i:j;
}
int get_min(int i,int j)
{
    return  i>j?j:i;
}
int compare(int i,int j, int flag)
{
    int ret;
    int (*p)(int,int);

    if(flag == GET_MAX)
      p = get_max;
    else
      p = get_min;
    ret = p(i,j);
    return ret;
}
int main()
{
    int i = 5,j = 10,ret;
    ret = compare(i,j,GET_MAX);
    printf("The MAX is %d\n",ret);
    return 0;
}
注意:
int *f(int i,int j);
int (*p)(int i,int j);

前者是返回指针的函数,是一个函数声明,后者是一个函数指针,定义了一个指针

函数指针做形参:

int get_max(int i,int j,int k,int (*p)(int,int));

返回函数指针的函数:

#include <stdio.h>
int get_big(int i,int j)
{
    return i>j?i:j;
}
int (*get_function(int a))(int,int)
{
    printf("the number is %d\n",a);
    return get_big;
}
int main()
{
    int i = 5,j = 10,max;
    int (*p)(int,int);
    p = get_function(100);
    max = p(i,j);
    printf("The MAX is %d\n",max);
    return 0;
}

int (*get_function(int a))(int,int)是一个返回函数指针的函数。首先,get_function(int a)是含有一个整型参数的函数,它的返回值是int (*) (int,int),它的返回值为get_big;


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值