char* c[] = { "ENTER","NEW","POINT","FIRST" };
char** cp[] = { c + 3,c + 2,c + 1,c };
char*** cpp = cp;
printf("%sn", **++cpp);
//"POINT",注意运行结束此时cpp指向cp[1]
printf("%sn", *--* ++cpp + 3);
//"ER",++优先级高,先执行*--*++cpp,再执行c[0]+3,此时cpp指向cp[2]
printf("%sn", *cpp[-2] + 3);
//"ST",等效*(*(cpp-2))+3,cpp-2指向cp[0],两次解引用后c[3]+3,注意此时cpp指向并没有改变
printf("%sn", cpp[-1][-1] + 1);
//"EW",等效*(*(cpp-1)-1)+1,cpp-1指向cp[1],第一次解引用指向c[1],第二次解引用指向"NEW",+1后指向E
此题是将指针数组,指针和数组名在不同情况下含义的综合运用,希望大家能结合代码、代码注释和图片仔细理解指针和数组名的本质,望能帮助到初学者们。



