有以下程序
#include<stdio.h>
main(){char*mm[4]={"abcd","1234","mnop","5678"};
char**pm=mm;
int i;for(i=0;i<4;i++)
printf("%s",pm[i]+i);printf("\n");}程序的运行结果是(abcd234op8)。为什么啊?
供参考:
#include <stdio.h>
int main()
{
char*mm[4]={"abcd","1234","mnop","5678"};
//指针数组,等同于mm[4][4] = {"abcd","1234","mnop","5678"}
char**pm=mm;// 等同于 pm = &mm[0][0]
int i;
for(i=0;i<4;i++)
printf("%s",pm[i]+i);//i=0,pm[i]+i ==> *(pm+i)+i ==> pm[0][0] ==> "abcd"
printf("\n"); //i=1,pm[i]+i ==> pm[1][1] ==> "234"
//i=2,pm[i]+i ==> pm[2][2] ==> "op"
//i=3,pm[i]+i ==> pm[3][3] ==> "8"
return 0;
}