此文缘起我看了这篇文章:
http://blog.csdn.net/newslxw/archive/2006/08/08/1038972.aspx 还记得当年读书时, 牛牛的C++老师告诉我: "引用, 其实就是别名, 与其所引用的对象完全等价". 可是, 我还是有这点疑问: "等价的含义, 是指的什么? 难道是说在最底层的实现上两者直接就是使用的同一个内存位置吗? " 比如下面的这段代码:
intmain()
...{
inta=100;
int&b=a;
int*c=&a;
b=99;
a=88;
b=77;
*c=66;
return0;
}
经过汇编后, 变成了这样:
main:
leal4(%esp),%ecx
andl$-16,%esp
pushl-4(%ecx)
pushl%ebp
movl%esp,%ebp
pushl%ecx
subl$16,%esp
.LCFI5:
movl$100,-16(%ebp) ; ebp-16 为变量 a 的地址leal-16(%ebp),%eax
movl%eax,-12(%ebp) ; 将a的地址放在 ebp-12 地址处
leal-16(%ebp),%eax
movl%eax,-8(%ebp) ; ebp-8是指针c变量, 此句是给指针c赋值
movl-12(%ebp),%eax ; 给引用b赋值前, 先把存在 ebp-12 的 a 的地址取到eax中
movl$99,(%eax) ; b = 99
movl$88,-16(%ebp)
movl-12(%ebp),%eax ; 此处给引用b的赋值, 与前面一样, 也是先取a的地址
movl$77,(%eax)
movl-8(%ebp),%eax ; 给*c赋值前, 先取c地址
movl$66,(%eax) ; 此处执行 *c = 66
movl$0,%eax
addl$16,%esp
popl%ecx
popl%ebp
leal-4(%ecx),%esp
ret
由此可见, 引用, 在具体实现时, 会申请一个临时空间(栈内空间), 目的是存放被引用对象的地址. 当使用引用变量时, 其实就是对被引用对象作了一次间接寻址. 而从汇编代码中来看, *c 确实与 b 在使用时的汇编代码一样, 都是先取地址, 再将值存入此地址. 所不同的, 只是在c++层面, 作为如 b 这样的引用类型变量, 只可在初始化时赋值, 且只能赋值一次.
分享到:
相关推荐
小品:五兄弟改变.doc
小品:五兄弟改变(1).doc
2021最新班主任资料包-小品:五兄弟改变.doc
搞笑小品:中石油的六大禁令知识竞赛年会精品模板文案.doc
标题中的“2021最新班主任资料包-小品:五兄弟改变.rar”是一个压缩文件,通常用于存储多个相关的文档或资源。这个标题暗示了这是一个针对班主任工作的资源集合,其中包含了一个名为“五兄弟改变”的小品剧本。这个...
【标题】:“初中语文文学讨论名著导读纯棉小品:一份女人成长的备忘”主要探讨的是女性成长过程中的心理变化、情感体验以及生活智慧。这类文学作品以平实的语言和细腻的情感描绘,深入剖析女性在不同阶段的成长经历...
在C++编程语言中,有一些常见但容易让人迷惑的概念和陷阱,这些在“C++陷阱小品-有趣易懂”系列中被Solmyr详细探讨。这个系列的文章旨在通过轻松幽默的方式,帮助开发者理解并避免在C++编程过程中遇到的问题。 1. *...
和C++名家对话风格相似。专题讲座,一个讲座一个故事,寓教于乐。文笔不错。
这篇文档虽然以一个小品的形式呈现,但它寓教于乐,揭示了学习英语的重要性以及知识应用的实际价值。小品中,富翁因为英语水平不足,在国外遇到了种种尴尬,这凸显了语言沟通能力对于日常生活的关键作用。同时,它也...
1. 安全知识竞赛:小品中通过竞赛的形式展现了中石油对安全教育的重视,通过幽默的方式传播安全知识,如煤气泄漏、公交车起火、预防雷击和应对地震等紧急情况的处理方法。 2. 煤气泄漏处理:在小品中,正确的做法是...
1. 安全教育的重要性:这个小品以轻松幽默的方式展示了安全教育的必要性,通过竞选“安全形象大使”的活动,强调了普及安全知识和防范意识的紧迫性。无论是家庭生活中的煤气泄漏处理,还是公共交通工具上的火灾应对...
此外,C++11及以后的版本引入了许多新特性,如右值引用、lambda表达式、自动类型推断(auto关键字)和移动语义等。这些现代C++特性使得代码更加简洁、高效,小品文可能通过实例来解释它们的用途和优势。 在面试和...
这个文档实际上是一个搞笑小品剧本,虽然标签和部分内容没有提供具体的技术信息,但是我们可以从中提炼出一些关于剧本创作、角色设定以及表演技巧的知识点。 1. **剧本结构**:小品剧本通常包含对话、动作描述和...
小品剧本:言传身教.doc
C++ 小品文集
### Solmyr C++小品文系列-菜鸟成长为大师 #### 知识点解析: **1. 字符串处理** - **字符串定义与存储**: - 在C/C++中,字符串通常被视为以`\0`(空字符)结束的字符数组。这意味着字符串是由连续的字符构成...
这篇文档实际上是一个小学六年级毕业表演的小品剧本,主题为《昨天 今天 明天》,通过对话形式展示了学生们对过去、现在和未来的回顾与展望。虽然标签为空,但我们可以从中提炼出以下几个教育相关的知识点: 1. **...
小品剧本校园搞笑幽默-曾经的校园精品小品剧本 根据提供的文件信息,我们可以总结出以下知识点: 1. 校园幽默小品剧本的重要性:小品剧本《同桌的你》展示了校园幽默的重要性在于它可以让观众欢笑和回忆过去的美好...
小品剧本校园搞笑幽默-最搞笑幽默的小品剧本 本资源是一个小品剧本,标题为《如此相亲》,属于校园搞笑幽默类别。剧本的主要内容是两个男女主人公,陆小姐和马努财,之间的一段搞笑幽默的相亲过程。 通过对剧本的...
1. 第一小品: 这个小品名为"如此双簧",是以校园生活为背景,幽默地展现了双簧表演的形式。其中,角色甲和乙通过互动展示了双簧的基本特点——一人表演,一人配音,强调了配合和反应的重要性。小品中,乙扮演的角色...