这两种两种初始化链表的方式有什么区别?我咋觉得差不多?
这两种两种初始化链表的方式有什么区别?我咋觉得差不多?
createLink2 是我自己的方法
int createLink(Stu **p );
int createLink2(Stu *p );
void main(){
Stu *head;
createLink( &head );
createLink2(head);
}
int createLink(Stu **p ){
//分配内存空间的时候 最后判断的是 *p是否为空
//所以要用括号把 给*p分配地址的这一段话包起来
if ((*p=( struct Stu *) malloc(sizeof(Stu))) == NULL )
{
return false;
}else{
// 注意这里要用括号包括*p 否则*号就是对后面的表达式取地址
// 也就是对 p->next=NULL 取地址 显然会报错
(*p)->next=NULL;
return true;
}
}
int createLink2(Stu *p ){
if ((p=( struct Stu *) malloc(sizeof(Stu))) == NULL )
{
return false;
}else{
p->next=NULL;
return true;
}
}