引用是否有地址的讨论的
创始人
2024-05-28 20:22:18

说在前头,纯属个人理解,关于引用是否有地址,实际上并没有一个很统一的说法, 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取地址。所以你说引用有地址也对,说他没地址也对

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
阿西吧是什么意思 阿西吧相当于... 即使你没有受到过任何外语培训,你也懂四国语言。汉语:你好英语:Shit韩语:阿西吧(아,씨발! )日...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...