type struct snode{
int i;
struct snode next;
}student;
student *p,*head;
那么p=head和p=head->next有什么区别吗?
还有上面的结构和type struct{
int i;
...
}student有什么区别?
c语言中结构的赋值问题
答案:2 悬赏:30 手机版
解决时间 2021-02-01 20:15
- 提问者网友:精神病院里
- 2021-01-31 20:27
最佳答案
- 五星知识达人网友:躲不过心动
- 2021-01-31 21:27
p=head和p=head->next有什么区别吗?
这个当然有区别,head的首地址指向的是结构体中的 i 成员变量,也就是head->i的地址。(注意是首地址,而不是等于p=head->i。且p=head->i,等号两边的类型不同,编译是不会通过的)
而head-->next指向的是另一个成员变量。
这两个成员变量并不一样。
两种结构体有什么区别?
首先,那个type是不是写错了,应该是typedef呢。
这两个结构体的写法,达到的目的是相同的,将一个结构体命名为student。
区别在于
第一个,是将 “struct snode” 结构体,命名为student,让后面使用到的程序能通过student标示,知道使用的是“struct snode”结构体。
第二个,是将一个没有命名的结构体,命名为student,让后面使用到的程序能通过student标示,知道使用的是这个没有命名的结构体。
这个当然有区别,head的首地址指向的是结构体中的 i 成员变量,也就是head->i的地址。(注意是首地址,而不是等于p=head->i。且p=head->i,等号两边的类型不同,编译是不会通过的)
而head-->next指向的是另一个成员变量。
这两个成员变量并不一样。
两种结构体有什么区别?
首先,那个type是不是写错了,应该是typedef呢。
这两个结构体的写法,达到的目的是相同的,将一个结构体命名为student。
区别在于
第一个,是将 “struct snode” 结构体,命名为student,让后面使用到的程序能通过student标示,知道使用的是“struct snode”结构体。
第二个,是将一个没有命名的结构体,命名为student,让后面使用到的程序能通过student标示,知道使用的是这个没有命名的结构体。
全部回答
- 1楼网友:大漠
- 2021-01-31 22:03
之所以出现你说的问题,是因为当执行
for(i=0;i<3;i++)
scanf("%c %d %f",&stu[i].name,&stu[i].a,&stu[i].b);
这步的时候,由于回车也算是一个字符,循环的时候把回车也赋给name了/所以输出的时候就会错误了.想解决这个问题只要把回车那个字符给吃掉就可以了.把这个循环改成:
for(i=0;i<3;i++)
{
scanf("%c %d %f",&stu[i].name,&stu[i].a,&stu[i].b);
getchar();
}
就没问题了.
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯