为什么要用二级指针

在重新回顾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时,会在堆栈中生成一个临时变量,在该函数中改变的是那个临时变量的值,而当我们程序跳出该函数时,我们给他传进去的实参值并没有发生改变,所以在形参设置时,设置为二级指针,让他们时参形参指向一个地方,防止程序出错

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值