1.数组本身也是指针
2.pm[i]+i,pm是个二维数组,它指向的是pm[i][i],也就是第0个字符串的第0个字符、第1个字符串的第1个字符...第n个字符串的第n个字符
3.print时,参数是%s,那么一直输出到字符串结尾停止,也就是遇到\0就不再输出了
回到题目
四个字符串都有4个字符
那么从第0个字符串的第0个字符开始输出到最后,就是abcd
从第1个字符串的第1个字符开始,就是234
再下一个是op
最后是8
注释了一下,可供参考:
#include <stdio.h>
int main()
{
char *mm[4]={"abcd","1234","mnop","5678"};//定义一个二维指针数组
char **pm=mm;//定义一个指针的指针指向指针数组名
int i;
for(i=0; i<4; i++)
printf("%s",pm[i]+i);//这里的pm[i]+i就是mm数组的第i行的字符串从第i个开始输出,直到‘\0’结束,所以i=0,输出的就是abcd,i=1输出的就是234,i=2输出的是op,i=3输出的是8
printf("\n");
return 0;
}
运行结果如图:
如有帮助,还请帮忙点下采纳!感谢!
因为它是pm[i]+[i],所以第一次输出第一项的后四个,然后输出第二项的后三个、第三项的后两个,最后在输出最后一项的最后一个