c语言中结构的赋值问题
typestructsnode{inti;structsnodenext;}student;student*p,*head;那么p=head和p=head->next有什...
type struct snode{
int i;
struct snode next;
}student;
student *p,*head;
那么p=head和p=head->next有什么区别吗?
还有上面的结构和type struct{
int i;
...
}student有什么区别? 展开
int i;
struct snode next;
}student;
student *p,*head;
那么p=head和p=head->next有什么区别吗?
还有上面的结构和type struct{
int i;
...
}student有什么区别? 展开
2个回答
展开全部
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标示,知道使用的是这个没有命名的结构体。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询