结构体的(.)操作符和(->)操作符区别

打印 上一主题 下一主题

主题 864|帖子 864|积分 2592

一、结构体的 . 操作符
二、结构体的 -> 操作符
三、点操作符的优先性和结合性
一、结构体的 .操作符
1.结构体成员的直接访问:结构体变量的成员是通过操作符 . 访问的。
二、结构体的->操作符
1.结构体成员的间接访问:当我们拥有一个 指向结构体的指针 ,我们访问这个结构的成员的方式是 对指针执行间接访问操作
然后再通过 点操作符 访问其成员。但是 点操作符 的优先级大于 间接访问操作符,因此需要使用括号,确保间接访问先进行。
即访问指向结构体的指针需要通过间接访问来进行
例子:
  1. struct complex
  2. {  float f;};
  3. void func(struct conmplex* cp);
复制代码
函数可以使用如下表达式来进行访问 f
(* cp).f   ———— 即通过此方式来进行访问结构体中的成员f
对指针进行 间接访问 将访问结构体,再用点操作符访问其成员。
由于该概念不是很方便,于是C语言提供了一个更为方便的操作符来完成这项工作———— ->操作符(也成箭头操作符)
和点操作符一样,箭头操作符接收两个操作数,但左操作数必须是一个指向结构体的指针
cp->f   等同于   (* cp).fs
三.点操作符的优先性和结合性:
从下表中我们可以看出其优先性是和[]相同的,结合性是从左到右的。

  1. struct complex{
  2.    struct simple s;
  3.    struct simple sa[10];
  4. };
复制代码
于是当如下使用该操作符时:
(comp.s).a      等同于  comp.s.a
((comp.sa)[4]).c  等同于  cmp.sa[4].c

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

火影

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表