关于typedef void (*V_FUNC)();//定义函数指针

这段代码出自

C++:多态 详解_c++多态_sponge'的博客-CSDN博客多态的概念:通俗来说,就是多种形态,。举个例子:比如,当买票时,是全价买票;买票时,是半价买票;买票时是优先买票。再举个栗子:最近为了,支付宝年底经常会做诱人的的活动。那么大家想想为什么有人扫的红包又大又新鲜8块、10块...,而有人扫的红包都是1毛,5毛....。其实这背后也是一个多态行为。支付宝首先会分析你的账户数据,比如你是新用户、比如你没有经常支付宝支付等等,那么你需要被鼓励使用支付宝,那么就你扫码金额=;.................................https://blog.csdn.net/zhang_si_hang/article/details/126173598

sponge佬非常厉害,总结得非常好,非常仔细, 推荐大家学完多态后回顾时可以看一下。

言归正传,代码如下:

typedef void (*V_FUNC)();//定义函数指针

对于这段代码有一种错误想法,typedef void (*V_FUNC)();可以简单地理解为(*V_FUNC)()代替了void?不可以,因为typedef 的作用是为一种类型定义一个新的名称,让这种类型更方便地被使用。在这个例子中,V_FUNC 就是一个新的名称,它被定义为一个函数指针类型,指向一个不带参数、返回值为 void 的函数。这时某些和我一样基础不扎实的选手开始反驳了:typedef int count 这段代码的意思就是 count 代替 int 使用吧?那你为什么(*V_FUNC)不是代替void使用?因为typedef的机制就是这样,其实上面那段代码已经定义了新名称了,如果你想写   typedef  V_FUNC void (*V_FUNC)();毫无疑问也是错误的 。因为  typedef void (*V_FUNC)();    的意思就是:定义一个类型 V_FUNC,它是一个指向函数的指针,该函数返回 void,不接受任何参数。其中括号的作用是指定指针所指向的函数的参数和返回值类型,而 typedef 则是将这个函数指针类型取一个别名 V_FUNC,方便后续代码的书写和使用。

 另一段代码:

typedef void(*)() V_FUNC; //sponge佬的注释为不能这么写

的确不可以这么定义函数指针。因为在 C++ 中,定义一个函数指针类型需要使用括号将指针类型括起来。

那我们不用typedef可以了吧?

可以;但是,如果没有typedef,我们需要在声明函数指针变量时每次都写出完整的语法,例如:

void (*func_ptr)(); // 声明一个返回类型为 void,参数列表为空的函数指针变量

而有了typedef,我们就可以将这个冗长的语法定义为一个类型别名,以后直接使用这个类型别名即可,例如:

typedef void (*V_FUNC)(); // 定义一个类型别名 V_FUNC,代表一个返回类型为 void,参数列表为空的函数指针类型
V_FUNC func_ptr; // 声明一个 V_FUNC 类型的函数指针变量

我们可以看到,使用typedef可以让代码更加简洁易读,减少了重复代码,提高了可读性和可维护性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

漂流刑

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

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

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

打赏作者

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

抵扣说明:

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

余额充值