一道简单的才语言习题,求详细解释.

问题描述:

一道简单的才语言习题,求详细解释.
#include
#include
void main( )
{char *p,*q;
p=(char *)malloc(sizeof(char)*20);
q=p;
scanf("%s%s",p,q);
printf("%s,%s\n",p,q);}
若输入abd def,则输出为( )A.def,defB.abc,defC.abc,dD.d,d

答案:A.def,def
q=p;
scanf("%s%s",p,q);这里先是p接收字符串,它接收了abd,之后q接收字符串,它接收def,由于p和q指向同一个地址,所以只存储了def.