引用的概念
为一个变量指定一个别名
引用的规则
- 用之前要初始化
- 使用了之后就不能修改指向了(对一个引用赋值实际上是对原本被引用的那个值进行赋值,而不是改变指向)
- 一个对象可以同时有多个引用
问:引用可以完全代替指针吗?
答:不可以,例如链表的尾指针时刻都要变的,引用不可以修改指向(java和python的就可以)
常引用
如果引用的目标是常量的话,那自身也要是常属性的(因为引用的对象如果是常属性的,就代表不能被修改值,所以引用作为他的别名,也不能修改值)
引用的使用场景
做参数&做返回值
注意事项
- 返回值是引用时,引用指向的数据如果出了函数就销毁的话,会出现野引用问题(引用指向的内容已经不再安全)
- 返回值是引用并且还用引用来接收(如上,而且还在持续使用不安全的内容)
引用的好处
在一些使用指针时理解会比较困难的地方使用引用,可以方便理解
做返回值时:
做参数时:
引用和指针的区别
语法上和底层中: