详解下面的程序题.#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);}若输入abc def,则输出为:( )

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/26 16:38:40
详解下面的程序题.#includevoidmain(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf(

详解下面的程序题.#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);}若输入abc def,则输出为:( )
详解下面的程序题.
#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);
}
若输入abc def,则输出为:( )

详解下面的程序题.#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);}若输入abc def,则输出为:( )
def,def
缺少个#include
另外用完后把malloc的内存释放掉
程序首先申请了20个字节大小的堆内存,用指针p指向它
然后再用指针q指向它
接着输入两个字符串填到p和q所指向的内存
最后打出p和q指向的内存中的字符串
因为p跟q指向同一块内存,所以在scanf的时候只有一个字符串写入了内存,前面写入内存的字符串被后来写入的覆盖了