声明:在内存里开辟一块连续空间,属于栈。
malloc:在内存里开辟一块不连续空间,属于堆。
//linkedlist.h文件
typedef struct Linkedlist
{int data;struct Linkedlist* next;
}lnode;
//linkedlist.c 比如里边已经定义一个链表了
lnode linkedlist;
lnode* p = &linkelist
这就已经创建了一个链表,且链表地址就是head首地址, 不要再在create list的功能函数里边再次malloc head了。
//linkedlist.h
void create_list ( lnode* p)
{// 直接malloc之后的节点// p->next挂上就行了
}
没有定义的才需要malloc一下,比如写stack
//stack.h
typedef struct STACK
{int* base;int* top;
}stack;
这里定义了stack s1之后还是要malloc,因为里边的base和top地址没定,只是在栈里开辟了指向这个stack名字的空间,大小为struct的大小,我这里是8字节。并不是后来malloc的几百多字节。
而链表的名字地址就是head节点的地址,是同一个,所以不用再次malloc。