C++ 深度探索引用

目录

补充一下引用的特性

下面探讨一下引用的本质

总结


补充一下引用的特性

  1. 引用在定义时必须初始化。
  2. 引用的关系一旦建立无法修改。

下面探讨一下引用的本质

int main(){

    int n = 5;
	int &ref = n;

    int m = 6;
    return 0;
}

 调试单步走,可以看到引用的地址和值是与变量完全相同的:

思考: 引用到底有无占用内存空间?

查看内存布局,可以看到变量n的内存地址上方有一块内存存储的值恰好为变量n的地址:

为什么会专门有一块内存来存储这个地址呢? 

 直接在内存上修改该地址的值,修改成变量m的地址:

可以发现:在我们修改了该地址的值后,监视窗口引用的值也相应的跟随改变,引用的值也变成了变量m的值 ref = 6 。

因此可以得出结论:

        引用在内存中占据了4个字节的内存空间,且存储的值就是引用所关联的对象的地址。这就表明其实引用是占一块内存的。

        不就是指针!因此引用的本质就是一个指针。

总结

  1. 引用的本质其实就是指针。
  2. 为什么引用在定义的时候必须初始化:其实就是为了防止出现类似于指针的问题,在定义时就需要关联对象,将其地址存放起来,且在使用的时候无法修改,不管引用传递给谁,引用一直都会存在,从而避免了指针滥用的情况。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值