C语言中strcpy

# include # include # include int main (void) { char *p1,*p2; p1=p2=( char *) malloc ( sizeof ( char )*10); strcpy(p1,"malloc "); strcpy (p2,p1+1); printf ("%c\n%c\n ",p1[0],p2[0]); } 为什么p1+1 p1地址和p2一样了

p1和p2的地址从一开始就是一样的啊,你有什么问题呢?strcpy只是修改地址存储的内容而已啊

p1,p2的地址本来就是同一个。

p1=p2=( char *) malloc ( sizeof ( char )*10);  你把p2f赋值给了p1,所以两个一样

但是如果我改成 p2=p1+1就不一样了啊

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632