首先,前的的定义开辟空间没问题吧,到了strcpy(p1,"malloc")会把这个字符串赋值给指针p1,接着,strcpy(p2,p1+1),是关键,它是先执行p1+1,此时已经运算了,p1=a;(已经变了),然后在赋值给p2=a,p1[0] p2[0]所以输出的是aa