指针的回忆
這道題很好,可以復(fù)習(xí)對(duì)指針和數(shù)組的理解。
//cpp是一個(gè)存儲(chǔ)著二級(jí)指針地址的三級(jí)指針,這里僅僅是將三級(jí)指針cp賦值于三級(jí)指針cpp,int main(void) { 1 printf("%s", **++cpp); 2 printf("%s", *--*++cpp+3); 3 printf("%s", *cpp[-2]+3); 4 printf("%s\n", cpp[-1][-1]+1); return 0;
}
1.? ++cpp; ~> cpp = cp+1; ~> *(cp+1)=c+2; ~> *(c+2)=c[2]? 故第一個(gè)printf打印的是c[2]的值,POINT
2. 由于1.對(duì)cpp進(jìn)行了操作,cpp=cp+1,則++cpp=cp+2; ~> *cpp=c+1; ~> --(c+1)=c ; ~>*c=ENTER, *c+3=c[0]+3=ER
3.? cpp=cp+2, cpp[-2]=cp; ~> *cp=c+3=c[3]; ~> c[3]+3=ST
4.? cpp=cp+2=cp[2], cpp[-1]=cp[1]=c+2; ~>(c+2)[-1]=c[1] ; ~> c[1]+1=EW;
?
?
其中用到了優(yōu)先級(jí)的問(wèn)題。
初等單目一二級(jí), // 初等運(yùn)算符和單目運(yùn)算符分別是第1、2優(yōu)先級(jí)
乘除求余加減移, // 這句里面的運(yùn)算符全歸為算術(shù)運(yùn)算符,移表示移位
關(guān)系等于不等于, // 關(guān)系運(yùn)算符(<? <=? >? >=)
按位與來(lái)異或或, // 位運(yùn)算符優(yōu)先級(jí)順序: & -> ^ -> |
邏輯與或條件弱, // 邏輯運(yùn)算符優(yōu)先級(jí)順序: && -> ||,后面跟著優(yōu)先級(jí)比較低(弱)的條件運(yùn)算符
賦值逗號(hào)一點(diǎn)破。 // 賦值,逗號(hào)最低
?
轉(zhuǎn)載于:https://www.cnblogs.com/sjxbg/p/6574379.html
總結(jié)
- 上一篇: AC自动机-洛谷3121 [USACO1
- 下一篇: BZOJ 3720: Gty的妹子树 [