//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语言书上抄过来的,但是这本书是给初学者看的(本人也是初学者(应该能看出来)),这本书并没有讲的特别透彻; //所以在这里问一下各位大神给解释下这里该如何解释;谢谢! //以下的代码省略;
0puppy0
柴门3952844