栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++引用

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++引用

引用概念

引用的符号和取地址一样,可以把它理解为取别名,引用变量不会开辟新的空间,它和它引用的对象共用一块内存

int main()
{
	int a = 10;
	int& b = a;
	int& c = b;
}

查看一下三个变量的地址

 

可以看到它们的地址都是同一个

引用的特性
  • 引用定义的时候必须初始化
  • 一个变量可以进行多个引用
  • 引用一旦有了实体,就不能改变
int main()
{
	int a = 10;
	int& b = a;
	int c = 20;
 	b = c;
}

因为引用对象不能被改变,因此上面代码中的b=c不是b的实体变成c,而是给b赋值,我们可以看看abc的值和地址

 我们定义一个变量,不允许它被改变时,我们会加上const关键字,这个时候要引用const变量,引用前面也需要加上const,引用后权限可以相等,可以缩小,不能放大

int main()
{
	int a = 10;
	const int& b = a; //权限缩小

	const int c = 10;
	const int& d = c; //权限相等

	const int e = 10;
	int& f = e;       //权限放大 不被允许
}

如果int引用double变量会发生什么事呢

int main()
{
	double a = 1.23;
	int& b = a;       //报错
	const int& c = a;
}

为什么不加const会报错呢,因为如果把double赋值给int,会发生类型转换,会有一个临时变量取到double的整型部分然后赋给int,这个临时变量不能被修改,因此int引用double实际上就是引用这个临时变量,要加上const

使用场景

之前我们如果写函数去交换两个变量的值,需要传入变量的地址,还要在函数内对地址进行解引用,现在把地址换成引用,直接对引用进行操作即可

void swap(int& a, int& b)
{
	int temp = a;
	a = b;
	b = temp;
}
引用和指针的区别
  • 引用定义时要初始化,指针不用
  • 引用指定实体后不能更改,指针可以指向任何变量
  • 引用不能为NULL,指针可以
  •  sizeof(引用)是类型的大小,sizeof(指针)是地址大小
  • 引用++为值加一,地址++为向后推
  • 可以有二级指针,不能二级引用

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886680.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号