通常您通过点 ( ) 访问结构成员Struct.Member
,但当Struct
是指针时,您必须使用Struct->Member
这有什么特殊原因吗?因为在这两种情况下,您都只是指一段记忆。并且编译器应该能够处理这两个运算符,所以它只是一种强制的代码样式吗?
这是因为语言是这样定义的。
有些语言允许.
运算符的前缀是结构或指向结构的指针。没有引入歧义,因为正如您所说,编译器知道前缀是什么类型。
C只是碰巧没有这样做。我不认为有任何深层原因,这只是丹尼斯·里奇决定这样做的方式。
并且使用.
for 结构和->
for 指针也可以让读者清楚前缀是否是指针。对于像 C 这样的相对低级的语言,这种细节可能很重要。
.
如果结构是指针,则可以使用符号访问结构元素。你只需要取消引用结构元素
所以 :
(*struct).element
应该可以正常工作