聲明:在內存里開辟一塊連續空間,屬于棧。
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。