malloc动态申请的空间为什么直接存放了结构体成员

typedef struct LNode{
int data;
LNode *next;
}*LinkList;

int main()
{
LinkList L;
L=(LinkList)malloc(50);
L->next=NULL;
}
为啥我这里申请的空间里存放有结构体的成员呢,求解惑。
结构体指针L指向了这块空间,那么结构体成员又是如何存放进这块空间的呢。
难道是说结构体指针指向这块空间之后,结构体里的成员就能自动存放进去吗。
还是说因为空间类型是结构体指针类型的,创建的时候就自动将对应的结构体存放进去了。

1.为啥我这里申请的空间里存放有结构体的成员呢,求解惑。
malloc申请的是内存,结构体成员是系统解析的结果。
2.结构体指针L指向了这块空间,那么结构体成员又是如何存放进这块空间的呢。
通过位置解析,data 在头8字节中,next在接着的 sizeof(LNode*)大小的内存中。
3.难道是说结构体指针指向这块空间之后,结构体里的成员就能自动存放进去吗。
通过位置解析,手动把相应的内存数据放进去。
4.还是说因为空间类型是结构体指针类型的,创建的时候就自动将对应的结构体存放进去了。
除了确定内存大小,位置以及类型,剩下的什么都没做,只有确定解析方法,没有存结构体这个动作。
5.如何解析
看编译器的实现。
-
做个类比,树上有一条虫,如果你是鸟,你解析这个虫的方式就是食物,吃了它。
如果你是树农,你解析的方式就是要打农药。
虫就在哪里,你无法存一个吃或者要打农药的动作到虫身体里,你无法把自己存进虫里。
你只能根据自己是谁,来解析面对同样一条虫,你要如何处理。

malloc函数左边的括号需要是指针类型,而LinkList 是一个结构体指针变量,因此可以写在这里,然后malloc右边用来分配内存大小,建议写成sizeof(LNode),需要多少就分配多少,不会造成资源浪费,每一个结点都这样分配空间

可以这样理解,创建结构体时,会为每个变量分配空间的。

理解不对,malloc只是申请了空间,没有说把结构体成员放进去的概念,他就是一片空间,具体用来做什么,就取决于你的指针类型。

通俗点说,我申请了空间,至于你用来干嘛就干嘛,空间不管你。就像是我有一个大箱子(内存),至于里面放什么,怎么放就取决于你的设计(指针类型),大箱子本身不知道你要用来干嘛