谁能给我讲一下这段代码啊~~~

来源:百度知道 编辑:UC知道 时间:2024/05/26 05:11:32
void InitList(LinkList *L) //初始化
{
*L = (LinkList)malloc(sizeof(LNode));
(*L)->next = NULL;
}
麻烦大家给我详细讲解下好吗尤其是括号里的语句

根据我的理解,LinkList的定义应该为
type LNode *LinkList;
此函数的功能是为了初始化一个链表 L,以下面这段程序为例来讲一下吧:
LinkList List_A = NULL;
InitList(&List_A);

在 InitList 调用前,List_A 是一个空指针,调用后,List_A 就是一个被初始化过的表头了,它指向一块分配好的内存空间,该内存空间大小为 sizeof(LNode),它指向的下一个节点为 NULL。

可见,要理解函数,最重要的是要理解在函数调用前和函数调用后,程序发生了怎样的变化。

首先可以肯定这代码是错的。

先分配了一个 LNode 的内存,然后让 L的值等于那个新分配的内存里按LinkList格式取出的值。

代码绝对是错的。推荐修改成

void InitList(LinkList *L) //初始化
{
L = malloc(sizeof(LNode)); //这里的LNode应该是sizeof(LinkList) - 4
L->next = NULL;
}