【C/C++】C语言中一些容易被人忽略的东西 之二 【typedef 与函数的姻缘】

转载请注明出处

由于阅历有限,篇幅不周之处还望指出,谢谢


且不说typedef有多常见,最多的莫过于 typedef struct了。那么强大的类型定义符typedef也是可以用来定义函数的,您可知道?

有如下准确的代码可以说明问题:

typedef int (*MYFunc)(int x,int y);//MYFunc 即 int * Function(int x, int y) 类型指针的新名称

如果显得太过于复杂,那么,我们暂且抛去形参列表,

即 : typedef int (*MYFunc)那么MYFunc实际上就是int型指针了

接上参数列表,我们继续:

int add(int x ,int y);

MYFunc  pMYFunc;

pMYFunc = add;

pMYFunc(5,6);//该处得到了我们想要的结果


很难理解对不对?

没关系,可以用这样一个不完全对的方法来稍微推下:

要理解的是pMYFunc = add;这句

我们先:MYFunc = add;//对不对?

再:*MYFunc=*add;

最终:int=*add//是不是那么有点意思?


如果我们这样:pMYFunc=&add;//这其实也是行得通的,事实上这才是原句

因为p=fun;(隐式取地址)和p=&fun(显式取地址)效果其实是一样的,可以自行编程验证下

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值