SqList *L 和 SqList * &L的区别(学习数据结构时的一个小疑问)

前提:在c++中我们学习了关于引用的相关知识,也就是在具体函数中如何在仅有一个return的时候向main函数返回多个值,用到了‘&’,也就是我们c语言常用的地址符
今天在学习线性表的时候,有这样一段参考代码(李春葆的数据结构教程)

void InitList(SqList *&L)
{
	L=(SqList *)malloc(sizeof(SqList));//强制类型转换
	L->length=0;
}

*L是指针,全称是指针变量,是一个用来保存内存地址的变量。在这里是一个指向顺序表,存储顺序表的地址的变量。

* &L是指针类型的引用,引用(reference)是c++对c语言的重要扩充。引用就是原变量的另外一个名称(别名),引用变量本身没有自己的实际存储空间,对引用变量的操作,就是在操作原变量。这里的* &L代表原指针。

这两个有着一个共同点,都指向顺序表 L ,如果在函数中修改L 的内容,都影响到 L 的内容。

不同点则是,在函数中修改指针本身所指向的地址,L 不会发生改变,而 &L会发生改变(具体在main函数中可以体现)。
可看笔者在Visual c++上单步调试的例子
指针类型的引用

在这里插入图片描述
在这里插入图片描述
这个实例可以看出用指针引用后,在函数中修改L的地址后,函数退出后L的地址改变了
指针变量的传递
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这次就很明显的看出,指针返回后并不改变本身的地址
参考博客(SqList *L 和 SqList * &L的区别/学习数据结构突然发现不太懂 小祥我查找总结了一下)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值