编写函数中的&是引用还是取地址符?
比如在实现顺序栈基本运算的算法中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:} 引用的本质是指针,不过是 c++ 提供的语法糖。引用变量可以看做是被引用变量的别名。
二者的区别是,指针可以为空(NULL or nullptr),引用不可能为空。
有人说 STL 的类型用引用,自定义类型用指针。但是我觉得,这是个人习惯问题,当然,我倾向于习惯用引用,毕竟每一次判断空指针好烦啊。
如果是 纯 c 的话,只有指针可以用。 &是引用,C++才有 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]