函数指针和指针函数,函数指针与回调

        关于函数指针和指针函数的讨论已经是老话题了,但由于平时使用的频率不是特别的高,又很容易忘记其概念,今天又用到了函数指针,正好在这里记录总结一下。

 

        顾名思义,函数指针这个词组中心词是指针这个名词,所以它是一个指针变量,一个指向某个特定类型函数的指针。它也可以声明为类型。使用举例:

int (*func)(int val);  //这句表达式声明了一个指针变量,他有一个int参数,并返回一个int值。

 

typedef int (*func)(int val);  //为函数指针声明类型定义。

void call(func fp, void* ctx);  // 声明一个函数,参数1为函数指针。

int fCallback(int val)

{

...

}

 

void main(void)

{

    call(fCallback, NULL);

}

        函数指针的使用场合最多的还是回调,要想写出高质量且封装性较好的代码,回调的使用很常见。由系统提供封装,调用用户编写的回调函数来处理事务,已到达用户的特定需求。回调函数的使用使得封装更容易,也更利于用户的移植和维护,也减少了系统代码的重复量,是其更简洁。由系统提供接口,将实现留给用户实现,这是使用回调的精髓所在。

 

 

        指针函数其中心词是函数,所以它是一个函数,一个返回值为指针的函数。指针函数没有什么特殊的用法,跟普通函数没太大区别,不再详述、使用举例:

int *func(int val);  //声明一个函数,它有一个int参数,并返回一个int型的指针。

 

        两者的定义其实很容易弄明白,而他们的表达式形式其实也比较容易区分,根据编译器结合原则,总是先与括号结合,所以根据这点就不难判断func的类型,是个指针还是个函数名。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值