结构体指针有关问题?

结构体指针问题?????
#define   TSIZE   45
struct   film   {
char   title[TSIZE];
int     rating;
}   ;
typedef   struct   film   Item;

typedef   struct   node   {
Item   item;
struct   node   *next;
}   Node;

typedef   Node   *   List;

1.   list   movice   和   list   *   movice   有什么区别????

2.   当在主函数时对list链表初始化用-Initializelist(&movice);
void   Initializelist(   List   *   plist)              
{
*   plist   =   NULL;
}

&movice指向list结构的指针,而plist是又是指向movice指针的指针,
是不是因该这样定义(lsit   plist))???      

请大家给各个解析,在这里谢先!!!



------解决方案--------------------
1、指针和指向指针的指针
即list movice:struct node *movice
list * movice:struct node **movice
2、当要在函数里改变指针的值时,应该传入指针的地址
------解决方案--------------------
1. list movice 和 list * movice 有什么区别????
=====================
list movice < == > Node *movice;
list *movice < == > Node **movice;
------解决方案--------------------
1. List movice

Initializelist(&movice);
void Initializelist( List * plist)
{
* plist = NULL;
}
调用得挺好啊....

------解决方案--------------------
Initializelist(&movice);
传地址到void Initializelist( List * plist)是不是把movice指向的结构的指针赋值为NULL???
----------------------------------------------

是将movice = NULL
------解决方案--------------------
list movice 结构体指针
list * movice list*所定义的变量是一个指向list类型的指针,而list又是一个指针
所以list * movice定义的就是一个指向指针的指针,多级指针

void Initializelist( List * plist)
{
* plist = NULL;/*对指针取了内容,plist为指针的指针,*plist为指针*/
}


------解决方案--------------------
1. list movice 和 list * movice 有什么区别

list movice == Node *movice;
list *movice == Node **movice;
2. 当在主函数时对list链表初始化用
Node Headlist;
Node *pMyHeadlist = NULL;//你的Initializelist(&movice)目的好像是这一步
pMyHeadlist = &Headlist;
int InitList(pMyHeadlist)
{
memset(pMyHeadlist-> item-> title,0,sizeof(pMyHeadlist-> item-> title));
pMyHeadlist-> item-> rating = 0;
pMyHeadlist-> next = NULL;
return 0;
}

链表只是一个节点指针,你初始化这个指针就可以了 ,哦 ,这是个头节点.