3 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超3個(gè)贊
除了歷史原因(良好且已報(bào)告的原因)之外,運(yùn)算符優(yōu)先級(jí)還存在一個(gè)小問(wèn)題:點(diǎn)運(yùn)算符的優(yōu)先級(jí)高于星形運(yùn)算符,因此,如果您的結(jié)構(gòu)包含指向結(jié)構(gòu)的指針,則包含指向結(jié)構(gòu)的指針...這兩個(gè)等效:
(*(*(*a).b).c).d
a->b->c->d
但是第二點(diǎn)顯然更具可讀性。箭頭運(yùn)算符具有最高優(yōu)先級(jí)(只是點(diǎn)),并且從左到右關(guān)聯(lián)。我認(rèn)為這比使用點(diǎn)運(yùn)算符同時(shí)指向struct和struct更為清晰,因?yàn)槲覀儚谋磉_(dá)式中知道類型,而不必查看聲明,該聲明甚至可以位于另一個(gè)文件中。

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊
C在不使任何歧義方面也做得很好。
當(dāng)然,點(diǎn)可以重載以表示兩者的含義,但是箭頭可確保程序員知道他正在對(duì)指針進(jìn)行操作,就像編譯器不允許您混合使用兩種不兼容的類型一樣。
- 3 回答
- 0 關(guān)注
- 613 瀏覽
添加回答
舉報(bào)