上述代码可转换为下图:
**++cpp,前置++为先使用再++,所以此时cpp指向了c+2处的地址,解引用得到c+2,再解引用得到P的地址,因此从P的位置向后打印字符串,得到POINT,如图所示。
*-- * ++cpp + 3,首先++cpp,此时cpp指向了c+1处的地址,解引用得到c+1,再--,变成c,解引用得到E的地址,+3表示跳过前三个字符,来到第四个字符E,从E的位置向后打印,得到ER,如图所示。
*cpp[-2]+3可转化为**(cpp-2)+3,cpp-2后得到了c+3处的地址,解引用得到c+3,再解引用得到F的地址,再+3,得到S的地址,从S的位置向后打印,得到ST,如图所示。
cpp[-1][-1]+1可转化为*(*(cpp-1)-1)+1,cpp-1后得到了c+2处的地址,解引用得到c+2,再-1变成c+1,解引用得到N的地址,再+1得到E的地址,向后打印得到EW,如图所示。