引用是否有地址的讨论

文章讨论了C++中引用的概念,指出引用被认为是没有地址的,与指针的区别在于它是一个对象的别名。引用一旦初始化后就总是指向同一块内存,而指针本身有地址并可改变所指对象。作者通过比喻解释了引用如何工作,以及为何说引用是对对象地址的直接访问,而不是拥有自己的地址。
摘要由CSDN通过智能技术生成

说在前头,纯属个人理解,关于引用是否有地址,实际上并没有一个很统一的说法, C++标准没有规定一个引用是否需要占用一块内存。

这里引用知乎“C++ 中引用是一块内存的标记,那引用本身有地址吗_百度知道 (baidu.com)”里面的回答: 

正文:

现在,开始自己的理解(开始自己的胡说八道)!!!再次强调,纯属个人理解!!!!欢迎讨论和指正。另外,我们现在统一按照c++里面的概念来讲!!!

一:结论:我认为引用是没有地址的,否则,引用和指针有什么区别!!!

论证:假设有一个变量a = 1,那么a是一个对象,a自己的地址是x0001,这个地址存放的是1。在此情况下,如果b是一个指针变量,b指向a,那么,这里的意思是b本身也是有地址的,设b的地址为x0016,b这个地址里面存放的是a的地址x0001。

若c为a的引用,如果c本身有地址,那么c指向a,也即c存放的也是a的地址,则c和b没有区别,所以不成立,因此,引用没有地址!!!

现在问题来了,如果引用没有地址,那么cpu到底是怎么访问到引用c的呢?

二:重磅:按照c++的概念,我们说a = 1是一个对象,意思是说a本身是一块内存空间,它的地址是x0001,x0001这块地址里面存放了1。所以说真实的对象其实是存放了1的x0001这个内存空间,a其实也只是一个名称,但是,我们现在把a和x0001绑定到一起了!!!!!!!,相当于一个人他身份证上的名字之间的关系(假设没有重名哈),也就是说,每当我们说a的时候其实说的就是x0001,说x0001也相当于说a。

三:那么引用是什么呢?按照上面的思路,实际上x0001这个内存空间可以叫任何名字,我现在假定给x0001取了一个别名q,q就是一个引用!!引用相当于外号

如果这还是不明白,那么再换个说法,假设一个人,他身份证上面的名字叫做“小明”,这个时候,a就是小明,现在我给这个“小明”取了一个外号“狗子”,那么狗子就是引用q。

补充一点,在此情况下,对引用q取地址,实际上就是对对象a取地址。所以你说引用有地址也对,说他没地址也对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值