鱼C论坛

 找回密码
 立即注册
查看: 2834|回复: 3

编写函数中的&是引用还是取地址符?

[复制链接]
发表于 2020-5-10 23:39:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如在实现顺序栈基本运算的算法中
initstack (sqstack *&s)
destroystack (sqstack *&s)
stackempty(sqstack *s)
push(sqstack *&s, elemtype e)
pop(sqstack *&s, elemtype &e)
gettop(sqstack *s, elemtype &e)

*&是什么意思啊?
分不清出什么时候用*&,什么时候用*, 什么时候用& 怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 03:27:40 | 显示全部楼层
引用的本质是指针,不过是 c++ 提供的语法糖。引用变量可以看做是被引用变量的别名。

二者的区别是,指针可以为空(NULL or nullptr),引用不可能为空。

有人说 STL 的类型用引用,自定义类型用指针。但是我觉得,这是个人习惯问题,当然,我倾向于习惯用引用,毕竟每一次判断空指针好烦啊。

如果是 纯 c 的话,只有指针可以用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 07:15:23 | 显示全部楼层
&是引用,C++才有
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-11 13:26:47 | 显示全部楼层
c++语法
例如定义函数
initstack (sqstack *&s)
destroystack (sqstack *&s)
stackempty(sqstack *s)
push(sqstack *&s, elemtype e)
pop(sqstack *&s, elemtype &e)
gettop(sqstack *s, elemtype &e)
函数形参前加 & 是引用的意思,简单的来说 initstack (sqstack *&s) 加了& 在函数体内对线性表进行的操作 更改创建删除等等 都会更改你主函数内的线性表
initstack (sqstack *s) 而你如果不加 在函数内发生的改变在函数调用结束后全被释放 主函数内的线性表不会发生变化
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-22 19:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表