变态指针题目,求大神解
char *c[] = {"ENTER", "NEW", "POINT", "FIRST"};char **cp[] = {c+3, c+2, c+1, c};
char ***cpp = cp;
printf("%s\n", cpp + 2);
printf("%s\n", **++cpp);
printf("%s\n", *--*++cpp + 3);
printf("%s\n", cpp + 3);
请问:输出啥内容。
有没有类似的一本书,或者类似讲指针的文章,讲解。这类题目不好做。 从形式上看, c等价于*(c+a)---这个很重要,下面的推到将称这个为公式
(1)printf("%s\n", cpp + 2);中,cpp,就是cp,也就是c+1,所以cpp就是(c+1),带入公式,就是*(c+1+1),就是*(c+2),也就是c,也就是"POINT",后面的+2自己明白吧
( 2 ) printf("%s\n", **++cpp);这里cpp自增1,++cpp相当于cp+1,**++cpp相当于**(cp+1),代入公式,相当于*cp,也就是*(c+2),再次代入公式,得到c,就是"POINT"
(3)printf("%s\n",--*++cpp+ 3);前题cpp已经自增1,这题又增1,所以++cpp相当于cp+2,所以
*++cpp就是*(cp+2),代入公式,就是cp,就是c+1,--*++cpp 就是--(c+1),就是c;--*++cpp 就是*c;
也就是*(c+0),就是c,也就是"ENTER",最后的+3自己看着办
(4) printf("%s\n", cpp + 3);由于前面cpp自增了两次(注意,--并不作用在cpp上),所以现在的cpp就是cp+2;cpp就是(cp+2),代入公式,就是*((cp+2)+1),就是*(cp+3).就是cp,也就是c;
所以,cpp就是c,也就是"FIRST",最后的+3自己处理 仰望天上的光 发表于 2015-3-25 20:34
从形式上看, c等价于*(c+a)---这个很重要,下面的推到将称这个为公式
(1)printf("%s\n", cpp...
学习了,版主好强 {:5_110:} 仰望天上的光 发表于 2015-3-25 20:34
从形式上看, c等价于*(c+a)---这个很重要,下面的推到将称这个为公式
(1)printf("%s\n", cpp...
谢谢。威武霸气。
页:
[1]