C语言 函数指针

函数指针 首先是一个 指针 。该指针指向函数。(指向函数的指针)

参考:https://blog.csdn.net/u012177034/article/details/52319219

  1. 定义:

int (*f)(int x,int y);//最容易理解
int (*f)(int,int);//只说明函数的输入数据类型
int (*f)();//可忽略形参,因为只是声明一个函数指针
typedef int (*func_ptr)(); 
func_ptr f;//先定义一个函数指针类型,再用此类型来定义

2. 初始化:

f = max;//函数名本来就是函数的首地址
f = &max;//取函数的地址

3. 根据上面的内容,我来举一个实际栗子:

自己写了个链表,下面是对链表中的元素进行查找,这里用到了int(*compare)(...)函数指针

int locateelem_sq(sqlist L,elemtype e,int (*compare)(elemtype,elemtype))
{
    int i=1;
    elemtype *p;
    p=L.elem;
    while(i<=L.length && !(*compare)(*p++,e)) ++i;
    if(i<=L.length) return i;
    else return 0;
}
这里是compare函数,简单比较是否是同一个数。

int compare(elemtype a,elemtype b)
{
    if(a==b)
        return 1;
    else
        return 0;
}
在主函数中进行函数调用:
int main()
{  sqlist La;
   int weixu;
   weixu=locateelem_sq(La,4,compare);
   return 0;
}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值