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
此题是将指针数组,指针和数组名在不同情况下含义的综合运用,希望大家能结合代码、代码注释和图片仔细理解指针和数组名的本质,望能帮助到初学者们。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)