通常您可以通过点(Struct.Member
)访问结构成员,但当Struct
是指针时,您必须使用Struct->Member
这有特殊原因吗?因为在这两种情况下,你只是指一段记忆。编译器应该能够处理这两个运算符,所以它只是一个强制代码风格吗?
答案 0 :(得分:4)
这是因为语言是这样定义的。
有些语言允许.
运算符的前缀是结构或指向结构的指针。没有引入歧义,因为正如你所说,编译器知道前缀的类型。
使用.
表示结构,使用->
作为指针也可以清楚给读者前缀是否是指针。对于像C这样的相对低级的语言,这种细节可能很重要。
答案 1 :(得分:0)
如果struct是指针,则可以使用.
表示法访问struct元素。您只需要取消引用struct元素
所以:
(*struct).element
应该可以正常使用