|
|
发表于 2015-3-25 20:34:19
|
显示全部楼层
从形式上看, c[a]等价于*(c+a)---这个很重要,下面的推到将称这个为公式
(1)printf("%s\n", cpp[2][1] + 2);中,cpp[2],就是cp[2],也就是c+1,所以cpp[2][1]就是(c+1)[1],带入公式,就是*(c+1+1),就是*(c+2),也就是c[2],也就是"POINT",后面的+2自己明白吧
( 2 ) printf("%s\n", **++cpp);这里cpp自增1,++cpp相当于cp+1,**++cpp相当于**(cp+1),代入公式,相当于*cp[1],也就是*(c+2),再次代入公式,得到c[2],就是"POINT"
(3)printf("%s\n",--*++cpp + 3);前题cpp已经自增1,这题又增1,所以++cpp相当于cp+2,所以
*++cpp就是*(cp+2),代入公式,就是cp[2],就是c+1,--*++cpp 就是--(c+1),就是c;--*++cpp 就是*c;
也就是*(c+0),就是c[0],也就是"ENTER",最后的+3自己看着办
(4) printf("%s\n", cpp[1][3] + 3);由于前面cpp自增了两次(注意,--并不作用在cpp上),所以现在的cpp就是cp+2;cpp[1]就是(cp+2)[1],代入公式,就是*((cp+2)+1),就是*(cp+3).就是cp[3],也就是c;
所以,cpp[1][3]就是c[3],也就是"FIRST",最后的+3自己处理 |
|