C++之引用

引用相当于给变量起个别名,并不分配内存空间,C++中话是这么说,但实际上这个引用就相当于C语言中的指针,实际是开辟了4字节的空间,与开辟指针大小的空间相同,且指向变量的地址。

引用相当于指针,其引用的大小与指针大小相同,但当打印sizeof时,打印出的就是变量的大小,这就是C++中做的一种蒙蔽。

例如:

int a = 200;
int &ra = a;
ra = 300;   //ra可以修改值
int b = 100;
int &ra = b;    // 编译报错

其中int &ra不可以再指向其他变量。也就是说,引用int &ra相当于int *const ra,即ra可以修改自身的值,但不能修改其指向,但指针可以修改其指向。

一、引用实际是指针

下面来验证一下引用实际是个指针:

#include<iostream>

using namespace std;

int main() {
    double a = 10.5;
    double &p = a;

    cout << sizeof(p) << endl;

    system("pause");
    return 0;
}

打开内存和监视窗口,进行调试:

这是变量a的地址,在栈上分配了空间,在分配的空间中写入了值。

这里写图片描述

这里写图片描述

再来看引用p:

这里写图片描述

这里写图片描述
监视到p的地址是0x002dfe34,与变量a处于同一地址,通过内存可以看到实际p是指向了0x002dfe34(地址从左到右是低地址到高地址),so引用就是个指针。

最后打印出sizeof(p)是8,看内存截图p就占了4个字节,这一切都是C++的障眼法。

这里写图片描述

二、总结

1、引用型变量必须初始化,引用变量必须挂在一个现有的同类型变量上;
2、引用变量的地址与来源变量的地址在同一个地址上,即地址相同;
3、引用变量与来源变量任何一个数值变化,则另一个一定变;
4、引用变量做函数参数,经常使用来代替原变量赋值或者取值;
5、引用变量的原理实际上就是指针变量,C++用障眼法让引用看起来是替身。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值