为什么不是*p=n+‘0’;

img

主要是因为zip函数中 ,第一层while循环的条件是 *p != '\0',这就限定了,用p来遍历原来的字符串,用q来记录压缩后的字符串。
*q++=n+'0',就是先让 *q = n+'0',也就是把数量(int类型的n)用字符的形式保存(比如整数7存为字符'7'),然后q指针下移一位,记录下一个字符的信息。*q++ = *(p+n-1)这句话,让*q 等于下一个字符,然后q++(指针下移1位),以便下一次循环时记录字符出现的数量。

p是操作指针,q是写指针
处理方法是通过p指针指向的字符进行判断,然后将处理结果放到q指针指向的位置,最后将q最后位置设置为字符串结束符,从而实现原指针数据的压缩