C++中点运算符和箭头运算符的区别
PS:需要快速看结论的,直接看文末总结归纳,需要理解的可以从文首开始看。
划重点,先说本质:无论是点运算符(.)还是箭头运算符(->),本质上都是寻址,寻找指定的结构体成员变量的地址,具体在程序中体现为:
p->member执行为p+offset_member(目标的内存地址)
s.member变成访问&s+offset_member(目标的内存地址)
因此实际上功能完全一致,看起来 p->member更加直接一些,只不过s.member多了一个先去s去地址的操作(&s).
因此,点运算符(.)应用于结构体变量,箭头运算符(->)应用于结构体指针.
例:
结构名.成员
str.name
指向结构的指针->成员
p->name
总结归纳:
点运算符(.)用于结构体变量访问成员。
箭头运算符(->)用于结构体指针变量访问成员。