#include <stdio.h> main() { char *p1,*p2; p1=(char*)calloc (20,sizeof(char)); p2=p1

#include <stdio.h>
main()
{ char *p1,*p2;
p1=(char*)calloc (20,sizeof(char));
p2=p1;
scanf ("%s%s",p1,p2);
printf("%s%s\n",p1,p2);}
哪位大师能告诉一下输出的结果啊? 谢谢! 解释一下

???
输出的结果是输入的p2字符串的值
因为p1和p2指向了同一个内存区域啊。追问

能在具体解释一下吗? 谢谢

追答

p1,p2指向的是同一个内存块的起始地址,
当你输入字符串的时候,
先输入p1,再输入p2,实际上p2的内容覆盖了p1刚才输入的内容
所以最后该内存块是p2输入的内容
同时由于p1和p2指向同一个内存块的起始地址,
所以p1的内容和p2一样的。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-20
p1和p2是两个指针,
p2 和 p1 都指向的是一个内存区域
像下面这样

p1——>[你输入的内容]<——p2

当你输入p2指向的域的时候,已经把前面输入的值覆盖了
所以输出的时候是两边p2指向的值本回答被网友采纳
相似回答