什么是C++的引用?如何定义和使用引用变量?linux C++第8讲

什么是C++的引用?如何定义和使用引用变量?linux C++第8讲

编码文章call10242025-05-08 11:55:103A+A-

引用的定义和使用

在C++中,变量的“引用”就是变量的别名,因此,“引用”又称为“别名”。建立“引用”的作用就是为一个变量起另一个名字,以便在需要的时候,可以方便、间接地引用该变量,这就是“引用”名称的由来。对一个变量的“引用”的所有操作,实际上,都是对其所代表的(原来的)变量的操作。

定义一个引用,有如下的格式:

数据类型名 &引用名称 = 被引用的对象;

在数据类型名后面,使用引用符合“&”,然后,接着引用的名称。最后,给引用设置引用的对象。

假设有一个变量a,想给它起一个别名(设置一个引用),可以这样写:

int a; //定义int类型的变量a;

int &b = a; //声明b 是一个整型变量a的引用变量,它被初始化为引用变量a;

此时,我们声明b是变量a的一样引用,b是变量a的一个别名。那么,对引用b的操作,实际上是对变量a的操作。

测试例子如下:

这样,声明了b是变量a的“引用”了,即变量 a 的别名。经过这样的声明后,使用a或b的作用相同,都代表同一变量。

注意:对变量声明一个引用,并不另开辟内存单元,引用b 和 变量a 都代表同一变量单元。在声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量。

注意:由于引用不是独立的变量,编译系统不给它单独分配存储单元,因此,在建立引用的时候,只有声明,没有定义,只是声明它和原有的某一变量的关系。

修改上面的例子,增加一个引用变量的定义,如下:

从编译信息可以看出,c引用没有被初始化。所以,在定义一个引用的时候,必须给引用赋值,设置它引用某一个变量。

所以,对于引用与指针的区别,可以这样理解:

(1)引用变量必须在定义的时候初始化,指针变量可以单独定义,不用进行初始化。

(2)引用变量必须与一个对象关联起来,即指向一个对象,而指针可以定义为空指针,不一定指向一个对象。

在声明一个变量的引用之后,在本函数执行期间,该引用一直与其代表的变量相联系,不能再作为其他变量的别名。下面的用法不对:

此时,相当于重复定义引用变量b,所以,是语法错误。

但是,我们可以修改引用变量b的值,测试例子如下:

可以看到,我们定义了引用变量b,初始化引用变量b,让它指向变量a1。所以,引用b就是变量a1的一个别名。

然后,修改引用变量b的赋值,把变量a2设置给引用变量b。此时,修改引用变量b的值,并不会引起变量a2的变化。

因为,在执行 b = a2; 的时候,引用变量b的指向变量a1,所以,执行语句:

b = a2;

是把变量a2的值设置给引用变量b指向的变量a1。所以,是a1变量得到a2变量的值,此时变量a1的值是16数值,并不是变量b引用变量a2。

所以,引用b是变量a1的别名,那么,上面的代码,执行:b = a2; 相当于把a2变量设置给a1变量。

注意:对于一个引用变量,只有在初始化的时候,设置引用变量指向的变量。在后续的操作中,对引用变量的赋值,不会修改引用变量指向的变量

所以,上面的代码,执行 b = a2; 的时候,由于 b 已经是 a1 变量的引用,所以,此时不会修改引用变量b引用a2变量。只是把a2变量赋给引用变量b指向的a1变量。

所以,相当于 a1 = a2;

这一点与指针有很大的区别,指针变量,可以在运行的过程中,修改指针变量的指向,让它指向另一个变量。例如:

程序的运行结果如下:

定义int类型变量a1和a2,并定义了int类型的指针变量b。开始,指针变量b指向a1变量。

然后,给指针变量b重新赋值,让它指向a2变量。此时,修改指针变量b的数据,就是修改变量a2的数据,与a1变量没有任何关系。

所以,这一点也是引用变量与指针变量的区别。

点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4