当前位置: 代码迷 >> C语言 >> [求助]为什么啊
  详细解决方案

[求助]为什么啊

热度:284   发布时间:2006-04-09 14:18:00.0
[求助]为什么啊
#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);
}
运行结果为什么是def def 啊
搜索更多相关的解决方案: include  

----------------解决方案--------------------------------------------------------
指针q=p则两个指针指向的是同一个地址,比如当你输入hi def时,则起先p,q指向的变量都赋成hi,然后又都变成def,输出自然就都是def了
----------------解决方案--------------------------------------------------------
为什么有两次赋值啊
----------------解决方案--------------------------------------------------------
以下是引用djgdq555在2006-4-9 14:18:00的发言:
#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);
}
运行结果为什么是def def 啊


----------------解决方案--------------------------------------------------------
假如输入法abc def回车
应该是 abc赋值给p
def赋值给q啊
----------------解决方案--------------------------------------------------------

p,q是指针,指向同一个变量,不管你怎么赋值,赋值给q,赋值给p也好,都是对它们指向的变量进行操作,所以就都一样喽!明白没?


----------------解决方案--------------------------------------------------------
你让q的地址跟着p了,这样的话p显示什么,q就会显示什么.还是这样好过
#include "stdlib.h"
main()
{
char *p,*q;
p=malloc(sizeof(char)*20);
q=malloc(sizeof(char)*20);
scanf("%s %s",p,q);
printf("%s %s\n",p,q);
free(p);
free(q);
}
----------------解决方案--------------------------------------------------------
  相关解决方案