[讨论]关于malloc的用法
已有如下结点定义#define NULL 0 /*宏定义*/
typedef struct node /*定义结点类型的数据结构*/
{
char c; /*数据域,类型为字符型*/
struct node *next; /*指针域,类型为本结构体类型*/
}*L; /*类型重定义,即Node和*L和struct node等价*/
main()
{
L l,p,q; /*用指针类型定义三个结点类型的指针*/
char ch;
int n;
l=(L)malloc(sizeof(struct node)); //已知此句与l=(L)malloc(sizeof(L))不等价
…………
}
然而使用l=(L)malloc(sizeof(L)),程序运行正常,但显然sizeof(L)和sizeof(struct node)大小不一,请问用l=(L)malloc(sizeof(L))这句为什么程序运行也正常?是不是用L定义的指针只需要sizeof(L)即可?如果是这样,那么我用l=(L)malloc(sizeof(struct node))这句,多出来的空间到哪去了?
本人确实还不太明白,请指教!