//clist是用來建立鏈表的函數,下面還有代碼沒有寫全;?
#include"stdio.h"
#define?N?5
typedef?struct?node
{
int?date;
struct?node?*next;
}SNODE;
?SNODE?*clist(int?a[])//在主函數中的實參是一個長度為5的一維整形數組;?
?{?????????????????????
? SNODE?*h;
? SNODE?*p,*q;
? int?i;
? q=(SNODE)malloc(sizeof(SNODE));
? h=q;
? for(i=0;i<N;i++)??????????//在這里每次都給p開辟一個空間;?
? {??????????????????????//可否理解為p指向的區域一共開辟了5個這樣大小的空間;?(這里我知道第二次開辟空間的時候,第一次的空間還是存在的,沒有清零也沒有覆蓋);?
? p=(SONDE?*)malloc(sizeof(SNODE));//而每次開辟的空間都是連續的,而且p指向了這些空間的首地址,也就是第一次開辟的那個空間的地址;?
? p->date=a[i];????????????????????//可不可以這樣理解呢??
? q->next=p;?????????????????????//malloc函數的定義中所說的開辟連續內存空間是不是就是這個意思呢??
? q=p;
}
q->next=0;
return?h;
?}
?//這些代碼都是本人在自己看的一本講c語言書上抄過來的,但是這本書是給初學者看的(本人也是初學者(應該能看出來)),這本書并沒有講的特別透徹;
?//所以在這里問一下各位大神給解釋下這里該如何解釋;謝謝!?
?//以下的代碼省略;
關于動態分配的問題,請教下大神;
慕粉1600176492
2016-12-24 12:34:37