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/08/03 05:26:09
main(){ char *p,*q; p=(char*)malloc(sizeof(char)*20);q=p; scanf(
xSJ@ I/-NE(bcU+[]הn}h)BJL[ $}XY0wι93쪑/ڦb.E%EIJ+t^eJ[5VVLo,=-57yVl(ԩi{ڞ"XZo-6vFo13N~H~_T/.#;`OlFd7M3f340nVytU/(w2LTp[ḫM]A)&J5g1nlNpp8]Uu$S0SYŠp00»}(+_AWG#v~kUذ#@Lj=rWHd'c3!i;ZZw 14H,N2 %ļ>]KB'/'xYP[.-U؆i&*/"ݦF!+~VW"

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