第二个while循环什么意思啊?为什么是p1=*q啊?后面还i++,用p1的话不是应该还在字符串首吗?感觉怪怪的

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

img

第二个while循环不对

while(*q)
{
    *(p1+i) = *q;
    q++;
    i++;
}
*(p1+i) = '\0';