为什么要用二级指针

在重新回顾C语言数据结构时,在实现顺序表和链表时关于指针使用的区别让我觉得很有趣
像在顺序表中实现

struct SeqList
{
    DataType arry[MAX_SIZE];
    int Size;
};

而我们在使用顺序表时,往往在main函数中直接定义:

SeqList seqlist;

在后面对顺序表的使用中,直接传参,比如

InitList(&seqlist);

而在链表中

typedef struct SQList
{
    DataType data;
    struct SQList *next;
}SQList,*PSqList;

在后面的使用中,我们往往在main函数中定义PSqList *pnode。
在后面的函数传参中,依然

InitPSlist(&pnode);

如果此时我们定义Init函数的时候,参数为一级指针,则在参数传递过程中,当程序运行到InitPSlist时,会在堆栈中生成一个临时变量,在该函数中改变的是那个临时变量的值,而当我们程序跳出该函数时,我们给他传进去的实参值并没有发生改变,所以在形参设置时,设置为二级指针,让他们时参形参指向一个地方,防止程序出错

你可能感兴趣的:(数据结构,C语言)