引用
**本质:**引用就是变量的别名
引用的初始化并不是值的拷贝,而是将引用方与被引用方绑定在一起。引用在定义时必须初始化,从而与一个变量绑定在一起。初始化后,引用不能再绑定其他变量。
**最常用的场合:**函数参数的传递
通过将函数参数声明成引用的另一个好处是可以避免对象的拷贝。如果函数参数占用了很大的内存空间,在值传递时就可能拷贝整个对象的空间,很多时候这种拷贝工作时没有必要的。
特点:
1.引用不会产生新的空间
2.引用必须初始化
3.一个变量可以有多个引用,引用也可以有引用
int a = 10;
int &b = a;
常引用
const int &a = 10;
常引用的初始化操作实际上分两步执行:首先将常量存放在一个临时变量中,然后使用这个临时变量初始化常量引用
int temp = 10;
const int &a = temp;
14.1 引用和指针的区别
- 指针是变量的地址,引用是变量的别名
①sizeof运算符的运算结果不同,
指针的sizeof运算结果是指针本身所占的空间,为4个字节;而引用进行sizeof运算得到的是原变量占用的空间,返回结果取决于原变量的数据类型
②自增++运算符的意义不同
指针进行自增运算符是对指针本身自增,使指针指向下一个地址空间,指针指向的变量没有改变;引用进行自增运算是对原变量的自增,改变原变量的值。这种性质可以扩展到其他操作符上
- 指针可以不初始化,引用必须初始化
- 指针本身可以被修改,引用本身不能被修改
- 指针可以为NULL,引用不能为NULL
- 指针可以定义二重指针,引用不能定义二重引用
- 指针需要先解引用,引用直接用