请C高手们解一下这个问题

来源:百度知道 编辑:UC知道 时间:2024/06/15 09:35:18
#include<stdlib.h>
main()
{
char*p,*q;
p=(char *)malloc(sizeof(char)*20);
q=p;
scanf("%s%s",p,q);
printf("%s%s\n",p,q);
}
的输出结果是defdef,请帮忙解释一下!

q=p 使指针q也指向指针p所指向的存储单元。所以输入的两个字符串占用同一段存储单元。也就是后一个字符串覆盖了前一个字符串。所以输出的是后一个字符串的内容。若你输入 “ok”,“回车键”,“hello”,则输出“hellohello”。