三級指針,真是難見,今天 在CSDN上看到了, 是別人發問的。問題如下:
#include "stdio.h"
char*c[]={"ENTER","NEW","POINT","FIRST"};
char **cp[]={c+3,c+2,c+1,c};
char ***cpp=cp;
main()
{
printf("%s",**++cpp);
printf("%s",*--*++cpp+3);
printf("%s",*cpp[-2]+3);
printf("%s\n",cpp[-1][-1]+1);
}
輸出結果是POINTER STEW 希望高手給出解釋,THANK YOU !
我的解釋:
step 1
**++cpp
cpp->cp[0]->c+3 ==> cpp==++cpp->cp[1]->c+2->"POINT"==> *++cpp->"POINT" ==> **++cpp=="POINT"
step 2
*--*++cpp+3
from step1 -->conclusion: cpp->c+2
++cpp==cpp->c+1 ==> *++cpp==*(c+1)->c[1] ==> --(*++cpp)->c[0] ==>*(--(*++cpp))=="ENTER" ==> *(--(*++cpp))+3->"ER"
step 3
*cpp[-2]+3
the same from step 2,conclusion:cpp->c+1
cpp[-2]->cp[0] ==> *cpp[-2]->(c+3) =="FIRST" ==> *cpp[-2]+3==(c+3)+3->"ST"
step 4
cpp[-1][-1]+1
the same from step 2,conclusion:cpp->c+1
cpp[-1]->cp[1] (->c+2) ==>cpp[-1][-1]->c+1 (->"NEW") ==> (cpp[-1][-1]+1)->"EW"
conclusion:POINTER STEW
參考:http://sysuor.blog.163.com/blog/static/8620131200832051039568/