如何在c中解释*p1-> p2和*p1.a?

com*_*fan 2 c syntax

这对我来说似乎含糊不清:

*p1->p2
    *(p1->p2) or (*p1)->p2

*p1.a
    *(p1.a) or (*p1).a
Run Code Online (Sandbox Code Playgroud)

编译器如何解释这些表达式?

Oli*_*rth 12

这完全取决于运营商的优先级.都->.具有的优先级高于*(在这种情况下),所以两个表达式是等效于:

*(p1->p2)
*(p1.a)
Run Code Online (Sandbox Code Playgroud)