C++学习笔记——复杂定义的解读

C++学习笔记——复杂定义的解读


对C++有一丁点涉及的人都应该知道,声明是编程中不可或缺的一部分。比如变量、函数和对象声明。日常编程中大多声明都是十分简单的,但偶尔会遇到一些十分复杂的声明,下面借用最近在读《C++编程思想》这本书中的内容总结一下解读一个声明的规则。

下面这些定义相信大家都很熟悉,解读起来也毫无困难:
int i; #定义一个整数i
int main(){};#定义一个名为main的函数,函数的返回值为整数

上面的两个声明只是最基础的,下面level up一下:
int *i; #定义一个指向整型变量的指针
void (*funcPtr)(); #声明一个指向一个没有参数,没有返回值的函数的指针

当然,上面两个声明也不困难,但是可以应用一些规则来解读了。解读声明请遵守:变量名-右-左-右,大多数的的声明都可以按照这个规则来解读。下面来用上面这个规则来解读一下以上第2个声明,从变量名开始,再右-左-右解读:

  1. 变量名开始:变量名为funcPtr,就从这里开始。
  2. :右面是括号,遇到括号就直接看左边。
  3. :接下来看左边,是一个‘*’,表示这是一个指针的变量,到这里又遇到了括号,跳到括号外,继续看右面。
  4. :一对括号,括号里没有东西,表示这个指针,指向没有参数的函数,继续往右看,没有内容了,又转向左边。
  5. :void,表示这个指针指向的函数没有返回值。
    单看这个声明也不是特别困难,再来看看这个:
    void *funcPtr(); #声明一个返回空指针的无参函数。
    这个声明跟上面那个十分相似,差异只在一个括号位置而已。

最后总结一下定义或声明的解读方式:变量开始,先右后左,遇到括号调转方向。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值