1

可能重复:
为什么 C 在 -> 和 . 之间有区别?

编译器足够聪明,可以知道左侧操作数是指针还是引用。为什么成员访问有两个不同的运算符(. 和 ->)?

是否使间接明确?为了易读性?在设计 C 语言时,是否有关于可用硬件的某些内容为在阅读源代码时易于区分这些操作提供了强有力的理由?

我读过它只是一种简写语法(*ptr).member,但是ptr.member当 ptr 是指针时它是否有效?为什么不能像ptr 是指针ptr.member一样“正常工作” ?ptr->member

4

1 回答 1

1

不完全是一个答案,但利用这种区别的一个地方是智能指针和容器迭代器

在这两种情况下,.运算符用于对对象本身进行操作,而->用于对包含在其中的对象进行操作。

于 2012-12-18T02:03:55.173 回答