#include <stdio.h>
void main()
{
char *str[]={"Welcome","to","Fortemedia","Nanjing"}; //开始时str是下面数组的第一个值:
//{第一个字符串的首地址的存放地址,第二个字符串的首地址的存放地址,第三个字符串的首地址的存放地址,第四个字符串的首地址的存放地址}
char **p = str + 1;//p是下面数组的第一个值:
//{第二个字符串的首地址的存放地址,第三个字符串的首地址的存放地址,第四个字符串的首地址的存放地址}
str[0] = (*p++) + 2; //str1[0]被改变了
//此后*p被改变了
其值为第三个字符串的首地址
str[1] = *(p+1);//str[1]被改变了 其值为第四个字符串的首地址
//此时p的值还是第三个字符串的首地址的存放地址 即*p(或者说p[0])对应str[2]
str[2] = p[1] + 3; //p[1]:在元素是字符串三(p是其首地址)的基础之上+1的 即等价于*(p+1)
//此后str[2]等于字符串四中j的地址
也就是p所保存的地址
str[3] = p[0] + (str[2] - str[1]);//由上一语句str+2, str[2]与p的关系可得
printf("0%s1%s2%s3%s\n",str[0],str[1],str[2],str[3]);
}