【C++初阶】引用

简介: 【C++初阶】引用

 

一.概念

引用就是取别名,在语法上它不会开空间,而是和它引用的变量共用同一块空间对引用的操作也就是对原来变量的操作。就像现实生活中给人取外号一样,不管是喊外号还是本名,指的都是那个人。


二.引用特性

1.引用类型必须和引用实体是同种类型的;

2.引用在定义时必须初始化

3. 一个变量可以有多个引用

4.引用只能有一个实体,它和指针不同,指针能够改变指向,而引用不能。

所以上图中的 b=x ,是赋值语句,而不是b引用x;

5.引用的权限可以缩小,可以平移,但不可以放大

权限放大:

权限缩小:

权限平移:


三.使用场景

引用做参数

1.做输出型参数(输出型参数就是形参的改变会改变实参,输入型参数相反);

2.减少拷贝,提高效率(在遇到大对象,或者是要深拷贝时宜用)

举一个典型的例子,C语言阶段我们都写过交换函数,当时是用的指针实现,但现在我们可以用引用实现:

引用做返回值

1.减少拷贝,提高效率(在遇到大对象,或者是要深拷贝时宜用);

2.修改返回值+获取返回值

引用做参数可以随便用,但是引用做返回值可不敢随便用

1.如果函数结束,返回的变量不销毁,可以用引用做返回值

2.如果函数结束,返回的变量销毁,则不可以用引用做返回值,可能会出现随机值;

这几点要牢记,防止出现莫名其妙的错误。


四.引用和指针的区别

在C++中引用可已用来代替指针实现一些功能,但C++并没用完全抛弃指针,有的功能就必须要用指针,所以C++的引用不能完全代替指针

实际上,引用的底层使用指针实现的,所以实际上引用是开空间的,但我们前期就认为它不开空间。

引用和指针的不同点:

1. 引用概念上定义一个变量的别名,指针存储一个变量地址;

2. 引用在定义时必须初始化,指针没有要求;

3. 引用在初始化时引用一个实体后,就不能再引用其他实体,而指针可以在任何时候指向任      何一个同类型实体;

4. 没有NULL引用,但有NULL指针;

5. 在sizeof中含义不同:引用结果为引用类型的大小,但指针始终是地址空间所占字节个数        (32位平台下占4个字节);

6. 引用自加即引用的实体增加1,指针自加即指针向后偏移一个类型的大小;

7. 有多级指针,但是没有多级引用;

8. 访问实体方式不同,指针需要显式解引用,引用编译器自己处理;

9. 引用比指针使用起来相对更安全;


🐬🤖本篇文章到此就结束了, 若有错误或是建议的话,欢迎小伙伴们指出;🕊️👻

😄😆希望小伙伴们能支持支持博主啊,你们的支持对我很重要哦;🥰🤩

😍😁谢谢你的阅读。😸😼

目录
相关文章
|
4月前
|
存储 安全 C++
浅析C++的指针与引用
虽然指针和引用在C++中都用于间接数据访问,但它们各自拥有独特的特性和应用场景。选择使用指针还是引用,主要取决于程序的具体需求,如是否需要动态内存管理,是否希望变量可以重新指向其他对象等。理解这二者的区别,将有助于开发高效、安全的C++程序。
32 3
|
4月前
|
存储 自然语言处理 编译器
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
【C++入门 三】学习C++缺省参数 | 函数重载 | 引用
|
5月前
|
存储 安全 编译器
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
【C++航海王:追寻罗杰的编程之路】引用、内联、auto关键字、基于范围的for、指针空值nullptr
66 5
|
5月前
|
C++
C++引用
C++引用
|
5月前
|
存储 编译器 C++
【C++ 初阶路】--- 类和对象(下)
【C++ 初阶路】--- 类和对象(下)
24 1
|
5月前
|
存储 编译器 C语言
【C++初阶路】--- 类和对象(中)
【C++初阶路】--- 类和对象(中)
28 1
|
4月前
|
C++
C++基础知识(二:引用和new delete)
引用是C++中的一种复合类型,它是某个已存在变量的别名,也就是说引用不是独立的实体,它只是为已存在的变量取了一个新名字。一旦引用被初始化为某个变量,就不能改变引用到另一个变量。引用的主要用途包括函数参数传递、操作符重载等,它可以避免复制大对象的开销,并且使得代码更加直观易读。
|
4月前
|
存储 自然语言处理 编译器
|
4月前
|
安全 C++