1.C++的引用
引用是C++的一个重要特性,正确的使用可以使代码更简洁和高效。
所谓引用就是变量的一个别名,可以理解为引用就是该变量本身。在C++中,引用符用 & 表示。
在语法上面,计算机是不会为引用去开辟内存的。
int a=10;
int &b=a; //为a取了一个别名叫做b,a和b所指代的是同一个地址空间的同一变量
要注意的是:
a.一个变量可以有多个引用。
b.引用必须初始化。(创建对象并赋与初值)
c.引用只能在初始化的时候被引用一次,不能改变为其他引用的变量。
d. const 引用: const 作为限定符,它限制一个常量不允许被改变。在赋予一个属性为常量的变量 引用的时候,要加上 const 修饰符修饰。如:
const int a=10;
const int &b=a;//因为a是一个常属性变量,所以在赋予a一个引用的时候,引用的属性也要为常属性。
2.引用的作用
a.引用作为参数传递时
在主函数中, func(a,b);
在调用函数 func(a,b)中, func(int &a,int &b)来接收
用引用做参数的好处,有以下三点
(1)函数内部的改变,也改变了外部的参数
(2)当参数为数组时,传引用可以节省空间
(3)当函数中进行只读操作(不能修改变量在内存中的值时),用 const 来修饰参数更为方便。
b.引用作为返回值传递时
容易引发错误的两点
(1)不要返回临时变量的引用(因为除了作用域的话,临时变量的生命周期结束,所在的地址空间就会被操作系统回收,从 而导致引用所取到的值可能不是预期值)
(2)如果出了作用域,临时变量还存在(static修饰,全局变量,传参传进来的),尽量用引用。会使代码更简洁,高效
3.指针和引用的区别和联系
(1)上面我们说过,在语法上,计算机是不会为引用分配内存的。但是其实在底层(汇编层)的实现,为了满足引用的要求,引用其实跟指针一样也开辟了变量.
(2)引用:从一而终,而且必须初始化。 指针可以不用初始化。
(3)引用必须指向有效变量,但指针可以不用。
(4)sizeof()意义不同。 sizeof(引用)表示所指向变量大小。
sizeof( 指针)表示变量的地址大小。
(5)指针和引用的自增,自减意义不同。 指针++表示加上指针所指类型的大小。
引用++表示引用的值加一。
(6)指针比引用更灵活但也更容易出错。
以上是我自己对这部分的理解。内容如有错误,欢迎指正