這似乎曖昧的對我說:* c1是如何解釋* p1-> p2和* p1.a?
*p1->p2
*(p1->p2) or (*p1)->p2
*p1.a
*(p1.a) or (*p1).a
編譯器如何解釋這樣的表達?
這似乎曖昧的對我說:* c1是如何解釋* p1-> p2和* p1.a?
*p1->p2
*(p1->p2) or (*p1)->p2
*p1.a
*(p1.a) or (*p1).a
編譯器如何解釋這樣的表達?
這一切都降至operator precedence。既->
和.
具有比*
更高的優先級(在這種情況下),所以兩個表達式是等效於:
*(p1->p2)
*(p1.a)
箭頭(->
)和點(.
)具有比引用操作更高的優先級(*
)
*(p1->p2)
*(p1.a)
1)p1爲指針結構包含P2,P2是指針,你去參考的東西:所以它是被解析。 *(p1-> p2) 2)p1是可變的(不是指針),它包含一個結構體,一個是你去引用的指針。 *(p1.a)
使用[運算符優先級(http://www.cppreference.com/wiki/language/operator_precedence)。 – 2011-06-05 23:07:16