这道题为什么不先算p1[0]=a,p1=p2=m呢?(答案是算的p2=a,p2=p1=a)

360U3186069495 |浏览437次
收藏|2020/02/15 07:09

满意回答

2020/02/15 07:34

程序的执行过程:p1=p2=(char *)malloc(sizeof(char)*10);p1和p2都指向同一个字符数组。strcpy(p1,"malloc");此时p1指向的字符数组的内容是"malloc"strcpy(p2,p1+1);因为p1和p2都指向同一个字符数组,此时执行的是p[i]=p[i+1];(i依次为0、1、2...),结果p1指向的字符数组的内容是"alloc",注意到p[0]是字符a(p1[0]和p2[0]都是字符a)。所以,printf("%c%c\n",p1[0],p2[0]);输出的结果是:aa。程序的运行结果也正是如此:

ygl990951

其他回答(0)
0人关注该问题
+1

 加载中...