我复习软件技术基础的单链表时,发现一个很费解的地方:
建立一个空的单链表的函数如下所示:
void initiatesl(node **h) {
*h = (node *)malloc(sizeof(node));
(*h)->next = NULL;
我想问的是,为什么要用二级指针**h,用*h来表达不可以吗?
我复习软件技术基础的单链表时,发现一个很费解的地方:
建立一个空的单链表的函数如下所示:
void initiatesl(node **h) {
*h = (node *)malloc(sizeof(node));
(*h)->next = NULL;
我想问的是,为什么要用二级指针**h,用*h来表达不可以吗?
因为调用该函数会传入指针的地址。
node *h = NULL;
initiatesl(&h);
if(h == NULL)
{
/* 创建失败 /
}
else
{
/ 创建成功 */
}