为什么必须使用' - >'访问struct成员?

时间:2013-10-05 22:11:16

标签: c struct

通常您可以通过点(Struct.Member)访问结构成员,但当Struct是指针时,您必须使用Struct->Member

这有特殊原因吗?因为在这两种情况下,你只是指一段记忆。编译器应该能够处理这两个运算符,所以它只是一个强制代码风格吗?

2 个答案:

答案 0 :(得分:4)

这是因为语言是这样定义的。

有些语言允许.运算符的前缀是结构或指向结构的指针。没有引入歧义,因为正如你所说,编译器知道前缀的类型。

只是碰巧不这样做。我认为没有任何深层次的理由,这就是Dennis Ritchie决定这样做的方式。

使用.表示结构,使用->作为指针也可以清楚给读者前缀是否是指针。对于像C这样的相对低级的语言,这种细节可能很重要。

答案 1 :(得分:0)

如果struct是指针,则可以使用.表示法访问struct元素。您只需要取消引用struct元素

所以:

(*struct).element应该可以正常使用