您当前的位置: 首页 >  c++

RuiH.AI

暂无认证

  • 0浏览

    0关注

    274博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++学习 九、引用

RuiH.AI 发布时间:2022-02-05 15:30:19 ,浏览量:0

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             
关注
打赏
1658651101
查看更多评论
0.0372s