这个程序怎么读,结果为什么是def def.

来源:百度知道 编辑:UC知道 时间:2024/05/15 09:40:02
#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);
}
若从键盘输入:abc def<回车>,则输出结果是
A)def def B)abc def
C)abc d D)d d

q=p;此处使q和p指向同一位置,所以下面的scanf()是对同一地址进行了两次写入,当然以最后写入的为准,而最后读入的是def,因此,在下面的printf()中两次输出def

一楼说的很对了,这么说吧....
当q=p之后,后面p和q的值已经是一样的了.
所以,后面就类似于
scanf("%s %s",p,p);或者scanf("%s %s",q,q);
这下,你明白结果了吗?

恩,对的,如果程序为
scanf("%s ",p); printf("%s\n",p);
scanf("%s ",q); printf("%s\n",q);
结果就是 abc def了