main(){ char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf("%s%s",p,q);printf("%s%s",p,q); }但用vc6.0试后,答案为defdef,不信你试,
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/03 12:30:22
![main(){ char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf(](/uploads/image/z/5119879-31-9.jpg?t=main%28%29%7B+char+%2Ap%2C%2Aq%3B+p%3D%28char%2A%29malloc%28sizeof%28char%29%2A20%29%3Bq%3Dp%3B+scanf%28%22%25s%25s%22%2Cp%2Cq%29%3Bprintf%28%22%25s%25s%22%2Cp%2Cq%29%3B+%7D%E4%BD%86%E7%94%A8vc6.0%E8%AF%95%E5%90%8E%2C%E7%AD%94%E6%A1%88%E4%B8%BAdefdef%2C%E4%B8%8D%E4%BF%A1%E4%BD%A0%E8%AF%95%2C)
main(){ char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf("%s%s",p,q);printf("%s%s",p,q); }但用vc6.0试后,答案为defdef,不信你试,
main(){ char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf("%s%s",p,q);printf("%s%s",p,q); }
但用vc6.0试后,答案为defdef,不信你试,
main(){ char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf("%s%s",p,q);printf("%s%s",p,q); }但用vc6.0试后,答案为defdef,不信你试,
如果:
输入:abc def(回车)
输出:defdef
而不是楼上说的abcdef
因为
p=(char*)malloc(sizeof(char)*20); //为p创建堆内存
q=p; //将p创建的堆内存赋值给q
//也就是说,p,q是指向相同的内存
所以说,
输入:abc def(回车) //实质是先把abc输入p指向的内存,再把
//def输入q指向的内存
//由于q,p所指向的内存是同一内存
//所以,值def覆盖了值abc
因而,内存中只有值def
在输出时,先输出p,再输出q,所以输出def后再输出def
故:
如果:
输入:abc def(回车)
输出:defdef