浅谈对引用变量的理解

浅谈对引用变量的理解

本篇随笔简单记录一下本蒟蒻对C++程序语言中引用变量的理解。

引用的概念

int a;
int b=a;

在上面的代码块里,(a)(b)的值相等。(额

但是(a,b)指向的并不是同一块内存空间,也就是,虽然(a,b)的值是相等的,但是其实他俩并不是同一个变量,因为他们的内存空间不一样。只是他们存储的值是一个值而已。

int a;
int &b=a;

在上面的代码块里,(a,b)的值相等。(额额额

但是(a,b)指向的是同一块内存空间了。这就是“引用”的概念,就是这个新变量(b)完全和(a)相同,只是相当于给(a)起了一个新名字,也可以理解为(a)多了个名字,(b)就是(a)的别名。

于是,代码int &b=a的意义就是声明(b)是一个整型变量的引用变量,其值被初始化为(a)

但是,引用变量在一个函数执行期间只能被唯一锁定,不能再作为其他变量的引用名。

即以下代码是错误的:

int a1,a2;
int &b=a1;
int &b=a2;

引用变量在函数参数中的应用

刚刚已经提到,引用变量只是被引用变量的一个“别名”,实际上,它们是共用一个内存地址的。所以,当我们把引用变量作为函数形参的时候,实际上,实参传给形参的是实参的地址,也就是说,实参和形参拥有相同的地址。如果形参改变了,实参也随之改变。

我们可以这样理解:当调用函数的时候,如果不用引用变量作为函数形参,那么函数相当于把两个实际参数复制了一遍传给形参。也就是形参占了两个新的内存地址。所以在函数执行过程中,实参的值不会被改变。

但如果使用了引用变量,实参的值就会被改变。理由在上面已经说过了。

原文地址:https://www.cnblogs.com/fusiwei/p/13376951.html