C++学习 九、引用
前言
- 前言
- 引用变量
- 创建引用变量
- 引用的本质
- 函数与引用
- 引用参数
- 返回引用
- 左值,右值,左值引用,右值引用
- 左值lvalue与右值rvalue
- 左值引用
- 右值引用
- 后记
本篇继续C++学习记录,引用。
引用变量引用是C++与C的一大扩展。引用变量是已定义变量的别名。
创建引用变量与其它变量不同,引用变量必须在声明的同时初始化,通过&
标识,如下所示:
int a;
int& aa = a;
此时,&
不再表示取地址,int&
表示整型引用。
变量a
与引用变量aa
的值和地址是相同的。因此,修改a
或者aa
都会使对方出现相同的改变。
此外,引用变量初始化之后,就不能修改引用的“指向”了,这点和指针不同。
引用的本质引用的本质,实际上是一个指针常量:
// 引用
int i;
int& ii = i;
// 实质
int* const pi = &i;
引用变量ii
与*pi
完全一致。
指针常量保存的地址不能被改变,这也就是创建引用变量后不能再修改“指向”的原因。
函数与引用上篇函数内容中提到两种传参方法,也就是传值和传址。C++提供的第三种传参方法,就是传引用。
通过传引用,函数也可以像传址一样修改函数外部的变量。
引用参数还是以经典的二值交换函数为例,通过引用参数:
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
void main(){
int x = 1;
int y = 2;
swap(x, y);
}
调用函数时,swap函数内的引用a, b
作为外部变量x, y
的别名,函数内部a, b
值交换,外部变量也将跟着交换。这一点从地址的角度来看更容易理解,因为a, b
的地址与x, y
相同。
引用的本质是指针常量,因此传参时也不会拷贝被引用者的完整数据。
注意:无论是引用变量,还是引用参数,非const引用类型必须一致。下面的程序将报错:
#include
#include
void swapr(double& a, double& b){
double temp = a;
a = b;
b = temp;
}
int main()
{
using namespace std;
float x=1., y=2.;
swapr(x, y);
cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?