一直不是很明白二级指针具体是什么意思?今天看到单链表的初始化是使用二级指针,就简单的理解一下。
网上搜索单链表的初始化都在说只能使用二级指针,我一直不明白非要用二级指针吗?难道一级指针就一定不行吗?我认为是可以的。
#include<stdio.h>
#include<stdlib.h>
typedef struct node{
int e;
struct node *next;
}node, *Linklist;
//书本上的初始化
void initList(Linklist *L)
{
*L = (Linklist)malloc(sizeof(node));
(*L) -> next = NULL;
}
//另一种方式的初始化
Linklist initList1()
{
Linklist L;
L = (Linklist)malloc(sizeof(node));
L -> next = NULL;
return L;
}
int main()
{
Linklist L,L1;
L1 = initList1();
L1->e = 2;
printf("%d\n",L1->e);
initList(&L);
L->e = 1;
printf("%d\n",L->e);
printf("OK");
return 0;
}
运行结果:
一般的单链表指针初始化使用的是二级指针,这样可以避免返回参数,可以直接通过参数返回;
但是如果不使用二级指针的话,就必须以返回值的方式实现初始化。