结构体用点( . ),结构体指针用箭头( -> )。
也就是说点的左边必须为实体,箭头左边必须为指针。
为啥要这样用
这两个的实际功能相同,那为什么要用两种符号呢?我们不能也用点( . )来操作结构体指针呢?
这就要了解一个实体变量和指针的区别了。我们假设有一个结构体用
s
s
s 表示,一个指向结构体的指针
p
p
p,这个结构体还有一个成员叫做
n
u
m
b
e
r
number
number。
这里
s
s
s 就是实体,里边真正储存着数据;而
p
p
p 是一个指针,里边没有存放值而是一段地址。着也就意味着两种不同的结构自然不可能用同一种操作符了。
其实我们也可以使用点来使用结构体指针进行访问。但是需要写成 (*p).number。这样显得有些繁琐。至此有一种新的符号箭头(据说这两种符号在C语言的历史上是同时出现的)。我们可以直接使用箭头和结构体指针进行访问 p->number。
当然我们也可以将箭头作为一种快捷方式,也就是语法糖。