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

C++小知识08 —— 引用

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

C++小知识08 —— 引用

引用和指针

引用是一种更安全的指针

1、引用必须初始化,而指针可以不用初始化

2、定义一个引用变量,和定义一个指针变量其汇编指令是一样的,通过引用变量修改引用内存的值,和通过指针解引用修改指针指向的值,其底层汇编指令也是一样的

先看看定义

这个是引用

 这个是指针

大家可以看到他们的汇编指令是一样的。修改值的操作汇编也是一样的。

3、引用只有一级引用,没有多级引用,而指针有一级指针,也有多级指针

4、概念上引用是给一个空间取别名,而指针是自己占有一个空间,这个空间装的是指向空间的地址。

下面展示一下常用的交换函数写法

void swap(int* x, int* y)
{
	int temp = *x;
	*x = *y;
	*y = temp;
}
void swap(int& x, int& y)
{
	int temp = x;
	x = y;
	y = temp;
}

这两个函数得到的结果都一样, 但是传递的参数不一样。第一个传递的是地址,第二个传递的是值。

左值引用和右值引用

先来说一下左值和右值的定义

左值:有内存,有名字,值是可以修改的。

右值:没有内存,没有名字。

但是在C++11标准中,提供了右值引用

int &&C = 20;

这就是右值引用,大家都知道立即数常量是不能用作引用的,因为它是没有空间的。而C++11可以用&&形式进行右值引用,它是专门用来引用右值类型的,指令上会自动产生一个临时空间,然后直接引用临时量,并且可以修改。

注意:不能用一个右值变量,来引用一个左值,因为右值引用会产生一个临时变量,而这个过程没必要产生临时变量。

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

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

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