码迷,mamicode.com
首页 > 其他好文 > 详细

a->b和(*a).b

时间:2020-04-18 14:13:05      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:等价   好用   形式   提高   转换   ase   nbsp   typedef   完全   

两者完全等等价。指针成员运算时,由于.比*级别度高,如果直接写成*a.b就相当于*(a.b)了,这是错误的,所以只好用括号提高*的优先回级(*a).b。很明显,这么写很繁琐,于是就用a->b代替(*a).b了,唯一的目答的就是简化

有的时候看不懂的时候转换一下会比较好看

例:

((RCC_TypeDef*)RCC_BASE)->APB2ENR |=((1)<<3);

就等同于

(*(RCC_TypeDef*)RCC_BASE)).APB2ENR |=((1)<<3);

可以看出在寄存器的操作中操作的是一个普通变量,不是地址变量

综上所述,以下 3 种形式是等价的:

结构体变量.成员名。
(*指针变量).成员名。
指针变量->成员名。

a->b和(*a).b

标签:等价   好用   形式   提高   转换   ase   nbsp   typedef   完全   

原文地址:https://www.cnblogs.com/xxxsans/p/12725073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!