求教关于结构体指针赋值的问题

超皮卡 2015-10-01 10:01:15
struct paiming
{
char name[20];
int b;
struct paiming *next;
};
程序1:
paiming *p=NULL,*q;
q = p;
q= (struct paiming*)malloc(sizeof(paiming));
strcpy(q->name, "abc");
q->b = 2;
q->next = NULL;
printf("%s",p->name);
输出结果为<null>
程序2:
paiming *p , *q;
p = (struct paiming*)malloc(sizeof(paiming));
strcpy(u->name, "ssssssss");
p->b = 3;
p->next = NULL;
q = p;
strcpy(p->name, "abc");
q->b = 2;
q->next = NULL;
printf("%s",p->name);
输出结果为abc


我想问一下程序1为什么输出的不是abc
他和程序2的区别在哪

谢谢!!!
...全文
105 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
云闲逐月 2015-10-01
  • 打赏
  • 举报
回复
程序1: q = p; q= (struct paiming*)malloc(sizeof(paiming)); 连续对q赋值两次,p和q就已经不等价了,两个地址已经不同。 始终记住了,指针变量就是地址,你这两个程序应该都是想把p和q这两个变量当成一个变量用吧,那就必须让他们拥有相同的地址,自己试着分析一下吧,可以尝试去看看这两个指针变量的值。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧