详解下面的程序题.#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/06/18 08:20:20
![详解下面的程序题.#include void main(){ char *p,*q;p=(char *)malloc(sizeof(char)*20);q=p;scanf(](/uploads/image/z/5305129-25-9.jpg?t=%E8%AF%A6%E8%A7%A3%E4%B8%8B%E9%9D%A2%E7%9A%84%E7%A8%8B%E5%BA%8F%E9%A2%98.%23include+void+main%28%29%7B+char+%2Ap%2C%2Aq%3Bp%3D%28char+%2A%29malloc%28sizeof%28char%29%2A20%29%3Bq%3Dp%3Bscanf%28%22%25s+%25s%22%2Cp%2Cq%29%3Bprintf%28%22%25s%2C%25s%5Cn%22%2Cp%2Cq%29%3B%7D%E8%8B%A5%E8%BE%93%E5%85%A5abc+def%2C%E5%88%99%E8%BE%93%E5%87%BA%E4%B8%BA%EF%BC%9A%EF%BC%88+%EF%BC%89)
详解下面的程序题.#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的时候只有一个字符串写入了内存,前面写入内存的字符串被后来写入的覆盖了