複雜的三級指針問題

 三級指針,真是難見,今天 在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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章