二维数组只是逻辑上的,可以等价的看成一维数组。
初始化之后的数组a:
'a' 'b' 'c' '\0' '\0'
'd' 'e' 'f' 'g' '\0'
while(*p)相当于while(*p!='\0'),指针p会一直循环++到第一个\0位置(a[0][3])
*p++=*s++; 相当于 *p=*s; p++; s++;
与二维数组等价的一维数组
'a' 'b' 'c' '\0' '\0' 'd' 'e' 'f' 'g' '\0'
指针p从'\0'开始,指针s从'd'开始
第一次赋值,'\0'变'd'
'a' 'b' 'c' 'd' '\0' 'd' 'e' 'f' 'g' '\0'
第二次赋值,'\0'变'e'
a' 'b' 'c' 'd' 'e' 'd' 'e' 'f' 'g' '\0'
后面以此类推