krii 发表于 2020-5-10 23:39:15

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

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

*&是什么意思啊?
分不清出什么时候用*&,什么时候用*, 什么时候用& 怎么办{:10_266:}

赚小钱 发表于 2020-5-11 03:27:40

引用的本质是指针,不过是 c++ 提供的语法糖。引用变量可以看做是被引用变量的别名。

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

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

如果是 纯 c 的话,只有指针可以用。

永恒的蓝色梦想 发表于 2020-5-11 07:15:23

&是引用,C++才有

KrisWang 发表于 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) 而你如果不加 在函数内发生的改变在函数调用结束后全被释放 主函数内的线性表不会发生变化
页: [1]
查看完整版本: 编写函数中的&是引用还是取地址符?