C语言——函数指针

一天不更新博客,生理难受。

介绍一下今天的主角:函数指针。顾名思义,函数指针就是一个指针,而且是存放函数地址的指针,通过函数指针,可以找到该地址处存放的函数,使得多元化的使用函数。

通过之前的知识,我们知道数组名可以代表数组首元素的地址,同样的,函数名也可以代表该函数的地址。即:函数名==&函数名。

函数指针的格式为:

函数的返回类型(*变量名)(参数类型)=函数名;

注意,参数类型只需声明参数的类型即可,如果有多个参数,那么使用逗号将每个参数类型分隔开。

举个例子:

有一个函数void ADD(int x,int y);

定义一个指针变量pADD存放函数ADD,可以将函数指针写为:

①void (*pADD)(int,int)=&ADD;

②void (*pADD)(int,int)=ADD;

那么得知了函数指针的书写格式,我们来了解一下函数指针的调用,我们按照上面创建的函数指针为前提,它对应的调用方式有:

①(*变量名)(参数);

例:int ret=(*pADD)(3,4);

②变量名(参数);

例:int ret=pADD(3,4);

值得注意的是,不能写为     *变量名(参数);   因为,这样写会导致优先级的问题,变量名会首先和函数调用操作符联用。

那么下面讲两个特殊的例子分析一下,加深理解:

①(*(void(*)())0)()

void(*)():函数指针类型。

(void(*)())0:将0强制转换为一个函数的地址。

*(void(*)())0:对0进行解引用操作。

(*(void(*)())0)():调用地址0处的函数。

总结:将0处的地址存储为函数,调用0地址处的函数,该函数的返回值类型为void。

②void (*signal(int,void(*)()int))(int);

signal和()结合,signal是函数名。

signal函数的第一个参数类型为int,第二个参数的类型是函数指针,该函数指针指向一个参数为int,返回类型为void的函数。

指针是c的法宝,肯定不会简单,如果半路放弃,那么永远只会徘徊在指针的门外,所以,加油!!!!

对于咋们不会整活的人来说,铁子们的一个赞或一个评论都颇为重要。如果这片文章有帮助到你,还请点个赞,评论一下,谢谢啦。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

S+叮当猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值