1
可能重複:
Why does C have a distinction between -> and .?爲什麼指針上的成員訪問/元素選擇有不同的操作符?
編譯器是足夠聰明的知道,如果左側操作數的指針或引用。爲什麼會員訪問有兩個不同的運算符(。和 - >)?
它是否使間接顯式?易讀性?在設計C時,有沒有關於可用硬件的東西,在閱讀源代碼時可以輕鬆區分這些操作?
我讀過關於它簡單地是(*ptr).member
的簡寫語法,但是ptr.member
永遠有效當ptr是一個指針嗎?如果ptr是一個指針,爲什麼不能ptr.member
「正常工作」爲ptr->member
?
是的,確切的重複。我應該搜索更多。 –
a)「如果ptr是一個指針,爲什麼不能將ptr.member作爲ptr->成員?」它可以在C中,但不是由於歷史原因。 b)在C++中,由於操作符重載,這將是一個不兼容的更改。 c)請注意,函數指針會自動解除引用......'p()'相當於'(******** p)()'d)使用更現代的語言,如rust或D. –