为了账号安全,请及时绑定邮箱和手机立即绑定

这一段只是用malloc函数申请了块空间,都没有定义结构体变量,请问可以这样赋值么

这一段只是用malloc函数申请了块空间,都没有定义结构体变量,请问可以这样赋值么

C
金大大Da 2016-01-22 11:38:33
struct list{int num;int score;struct list *next;}struct list *p,*listhead,*listpp=(struct list*)malloc(sizeof(struct list));listhead=p;listp=p;listp->next=NULL;listp->num=2;listp->score=86;
查看完整描述

2 回答

已采纳
?
onemoo

TA贡献883条经验 获得超454个赞

结构体本身就是一段连续的内存空间,定义list类型的语句描述了在其中相应位置上该存什么东西(或者说是描述了该如何解释相应内存位置上的数据)。

p、listp 和 listhead 都被声明为struct list指针,且随后它们依次被指向为那段申请出来的内存。那么通过这些指针访问这段内存,编译器就会认为这段内存中的数据应按照list结构体来解释,所以可以通过这些指针来设置结构体的成员(这一步对编译器来说只不过就是在内存的相应位置上放入适当的数据)。


C语言中几乎所有的变量都是一段内存,这些内容如何使用完全是由该变量的类型决定的,这就是所谓C语言是强类型语言

查看完整回答
反对 回复 2016-01-25
?
输输输

TA贡献22条经验 获得超21个赞

答案是可以。

相当于:

listp= (struct list*)malloc(sizeof(struct list));

查看完整回答
反对 回复 2016-01-23
  • 2 回答
  • 1 关注
  • 1858 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信