-2

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

这有什么特殊原因吗?因为在这两种情况下,您都只是指一段记忆。并且编译器应该能够处理这两个运算符,所以它只是一种强制的代码样式吗?

4

2 回答 2

4

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

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

C只是碰巧没有这样做。我不认为有任何深层原因,这只是丹尼斯·里奇决定这样做的方式。

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

于 2013-10-06T02:22:53.777 回答
0

.如果结构是指针,则可以使用符号访问结构元素。你只需要取消引用结构元素

所以 :

(*struct).element应该可以正常工作

于 2013-10-05T23:55:31.117 回答