1、指向不同
一般情况下用“.”,只需要声明一个结构体。格式是,结构体类型名+结构体名。然后用结构体名加“.”加域名就可以引茄胡用域 了。因为自动分配了结构体的内存。如同 int a;一样。
而用“->”,则要声明一个结构体的指针,还要手动开辟一个该结构体的内存,然后把返回的指针给声明的结构体指针,才能用“->”正确引用。
否则内存中只分配了指针的内存,没有分配结构体的内存,导致想要的结构体实际上是不存在。这时候用“->”引用自然出错了,因为没有结构体,自然没有结构体的域了。
2、读法不同
(*a).b 等价于 a->b。"."一般情况下槐敏读作"的”。
“->”一般读作"指向的结构体的"。
3、作用的不同
在“结构”一单元中出现的->运算符成为“右颤明拦箭头选择”,在使用中可以用new_node->value = 10;来代替(*new_code).value = 10;
也就是说在结构中,运算符->是运算符*和运算符.的结合,在上述语句中,他先对new_node间接寻址以定位所指向的结构,然后再选择结构的成员value。
->是指针引芹纤如用数据用的,. 是普通的变量引用数据用的;
&p->id和p.id是不一样的,前者是取id的地址,后者是取id的值;
&p->id和嫌启&p.id是一样的,都是取竖慧id的地址,因为->和.的优先级都比&高,但这里面的p是不一样的,前者是指针变量。
唯一的区别是->前面放的是指针,而.前面跟的是结构体变量,如雀备已定义档孝了一个结构行岁稿体struct student,里面有一个int a;然后有一个结构体变量struct student stu及结构体变量指针struct student *p;且有p=&stu,那么p->a和stu.a表示同一个意思
C语言中的'.' 是直接引用;斗粗
C语言中租知的'->'是间空型镇接引用。