C++引用(初步介绍)

本文详细阐述了C++中的引用概念,包括其作为别名的特性、初始化规则、常见错误、应用场景,以及与传值和指针在效率和用法上的区别。
摘要由CSDN通过智能技术生成

引用的概念

引用是给已经存在的变量取了一个别名,并没有额外开辟空间

引用的格式如下

int a=1;
int& ra=a;

即 类型& 引用变量名=引用实体

注意,引用的类型必须和引用实体的类型是相同的

引用的特性

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

int& ra;

如上的代码就是错误的

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

int a=1;
int& x=a;
int& y=a;

3.引用一旦引用了一个实体,就不能再引用其他实体

int a=1;
int b=2;

int& x=a;
int& x=b;//错误
x=b;//将b的值赋给x(a)

引用常见错误

1.实体前有const,引用没有const

const int a=10;
int& ra=a;

如上的代码就是错误的,第二行代码放大了a的权限,原本只能读a,现在ra的引用既能读又能写 

2.实体为常量,引用没加const

int& ra=10;

如上的错误代码中,10是常量,无法修改,而int类型能修改

3.引用类型与实体类型不同

double a=1.1;
int& ra=a;

如上的代码就是错误的,引用的类型必须与实体的类型一致 

引用的应用场景

1.做参数

void Fun(int& a)
{
    //...
}

如上,引用变量在函数Fun中作为参数

2.做返回值

int& Fun()
{
    //...
}

 如上,引用变量在函数Fun中作为返回值

需要注意的是,若出了函数作用域,返回的实体变量还给操作系统了,就必须使用传值返回,而不能传引用返回

int& Add(int x, int y)
{
    int ret=x+y;
    return ret;
}

如上就不能传引用返回 

传值,传引用的效率比较

若传值,在传参和返回时,参数与返回值是值的一份临时拷贝,故传值效率相比于传引用,效率更低

引用和指针的区别

1.引用是一个变量的别名,而指针储存一个变量的地址

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

3.引用在定义后,就不能再引用其他实体变量,而指针可以改变储存的地址

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

5.在sizeof中,引用的大小为引用类型的大小,而指针的大小为指针变量的大小(32位平台下4个字节)

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

7.没有多级引用,有多级指针

8.若想访问实体,引用编译器自己处理,指针需要显式解引用

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

小结

作者全方位介绍了引用,包括引用的概念,是实体变量的别名,还有引用的一些特性,使用引用时会出现的错误,引用的应用场景,引用与传值在效率上的比较,引用和指针的区别。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值