static void(*set_malloc_handler(void(*f)() ) ) ()

前言

标题所示的是什么意思?
写成下面的形式就容易看了:

typedef void (* p_f)();
static p_f set_malloc_handler(p_f f);

下面尝试进行解释

添加一些空格,方便阅读
static void( *set_malloc_handler(  void(*f)()  ) )  ();

下面对一些概念进行说明:

  1. 返回指针的函数(这个指针指向一个函数)。首先有一个函数,函数名为set_malloc_handler,这个函数的形参列表为空,这个函数返回一个指针,这个指针指向一个函数(该函数形参列表为空返回类型为void):
    void (*set_malloc_handler() ) ()
  2. 函数的形参列表为指向函数的指针
    void set_malloc_handler(  void(*f)()   )
  3. 1和2结合,即它是一个函数,形参列表为一个指针(该指针指向一个函数),返回值也是一个指针(该指针也指向一个函数):
    static void( *set_malloc_handler( void(*f)() ) ) ();

如何看?

首先从左向右找到名称,找到名称后从右向左看,括号优先级较高,同级别运算顺序为从左向右。首先找到set_malloc_handler,由于*的优先级低于()所以set_malloc_handler和括号结合,set_malloc_handler( void(*f)() )为函数名和其形参列表,剩下的则为其返回值,void(*)(),他的形参为 void(*f)()。


总结

更详细的讨论:

https://www.cnblogs.com/yangjiquan/p/11465376.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值