猿问

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

struct list

{int num;

int score;

struct list *next;

}

struct list *p,*listhead,*listp

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

listhead=p;

listp=p;

listp->next=NULL;

listp->num=2;

listp->score=86;

金大大Da
浏览 1854回答 2
2回答

onemoo

结构体本身就是一段连续的内存空间,定义list类型的语句描述了在其中相应位置上该存什么东西(或者说是描述了该如何解释相应内存位置上的数据)。p、listp 和 listhead 都被声明为struct list指针,且随后它们依次被指向为那段申请出来的内存。那么通过这些指针访问这段内存,编译器就会认为这段内存中的数据应按照list结构体来解释,所以可以通过这些指针来设置结构体的成员(这一步对编译器来说只不过就是在内存的相应位置上放入适当的数据)。C语言中几乎所有的变量都是一段内存,这些内容如何使用完全是由该变量的类型决定的,这就是所谓C语言是强类型语言。

输输输

答案是可以。相当于:listp= (struct list*)malloc(sizeof(struct list));
随时随地看视频慕课网APP
我要回答