C语言计算机二级考试

img


看答案没看明白!有点想不通!想知道这个属于字符串数组的知识吗?还是什么知识

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;
}

运行结果如图:

img

如有帮助,还请帮忙点下采纳!感谢!

因为它是pm[i]+[i],所以第一次输出第一项的后四个,然后输出第二项的后三个、第三项的后两个,最后在输出最后一项的最后一个