C++引用

1.引用的概念和定义

1.引用不开辟空间

引用不是新定义了一个变量,而是给已经存在的变量取了另外一个名字,记住!!!只是取了另外一个名字,不会为这个引用开辟空间。

我们可以看到,我们设置了一个c用来引用a的值,但是我们调试的时候无法读取c的内存,证明引用是不开辟空间的 

2.引用的特性

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

引用不初始化就会报错. 

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

 b和c和d都是a的引用,都能表示a。

3.引用一旦引用一个实体,再不能引用其它实体

 

我们可以看出一旦d引用了a那么就和a绑定死了,如果修改d的值就是修改a的值 ,所以引用只能再初始化时定义一次,一旦定义完成就绑定死了。

3.引用的使用

引用在实际中的作用还有引用传参和引用做返回值

 这两种用法主要是为了增加代码的书写效率,当然指针也能做到以上的功能,但是引用会比指针更方便一点

 这种写法要比指针优化很多,至少不需要再解引用。

引用也可以作为返回值。 

 4.const引用

const和我们学的c语言的const差不多,将变量的权限缩小,说白了就是变量的值变不了了,权限小了,

引用加了const所以我们不能对它赋值。 

 

但是这种就可以,因为它没有const,它权限大。

1.权限可以从大变小,但不能从小变大

 

这就是从小变大,编译器会报错。 

 

这就是从大变小编译器不报错输出 如下

 

2.类型转换

有些时候要注意一些类型会发生类型转化比如int& b = a*3;double d=12.13;int& r=d;这样的一些场景会发生类型转化,再a*3发生运算的时候运算结果会保留再一个临时对象中,int&r=d也是如此在,类型转化中它的值也会被保留在一个临时对象中,所以b和r引用的都是临时变量,而C++规定临时对象具有常性,所以这里就发生了权限放大,必须要常引用才可以。

 

 

以上就是在类型转换或者运算时发生类型转化,然后还使用引用发生报错。

正确的方式如下 

 

 

5.指针和引用的关系 

1.引用是变量的取别名不开空间,指针是存储一个变量的地址,要开空间。

2.引用在定义时必须初始化,指针建议初始化,但语法上不是必须的。

3.引用在初始化引用一个对象后,就不能在引用其它对象,而指针可以在不断地改变指向对象

4.引用可以直接访问指向对象,而指针需要解引用才是访问对象

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

6.指针很容易出现空指针和野指针的问题,引用很少出现,引用的使用相对更安全一些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值