指针的回忆
這道題很好,可以復習對指針和數組的理解。
//cpp是一個存儲著二級指針地址的三級指針,這里僅僅是將三級指針cp賦值于三級指針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]? 故第一個printf打印的是c[2]的值,POINT
2. 由于1.對cpp進行了操作,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;
?
?
其中用到了優先級的問題。
初等單目一二級, // 初等運算符和單目運算符分別是第1、2優先級
乘除求余加減移, // 這句里面的運算符全歸為算術運算符,移表示移位
關系等于不等于, // 關系運算符(<? <=? >? >=)
按位與來異或或, // 位運算符優先級順序: & -> ^ -> |
邏輯與或條件弱, // 邏輯運算符優先級順序: && -> ||,后面跟著優先級比較低(弱)的條件運算符
賦值逗號一點破。 // 賦值,逗號最低
?
轉載于:https://www.cnblogs.com/sjxbg/p/6574379.html
總結
- 上一篇: AC自动机-洛谷3121 [USACO1
- 下一篇: BZOJ 3720: Gty的妹子树 [