c++引用和指针,不为人知的秘密。
来源:互联网 发布:unity3d 离散事件仿真 编辑:程序博客网 时间:2024/06/01 08:15
读大学的时候老师总是说,引用和指针有个显然的区别,就是引用是不会分配内存的空间的,而指针是有自己的内存地址的。
例如:int a = 1; int &b = a; int *c = &a; print("%X, %X, %X", &a, &b, &c); 可以通过输出的结果知道:a和b打印的地址相同。
但是:
int main()
{
int a = 1;
int &b = a;
int *c = &a;
int *d = &b;
return 0;
}
如果通过反汇编却发现:
.file"hellWord.cpp"
.text
.globl main
.type main, @function
main:
.LFB0:
.cfi_startproc
.cfi_personality 0x3,__gxx_personality_v0
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $1, -28(%rbp)
leaq -28(%rbp), %rax
movq %rax, -24(%rbp)
leaq -28(%rbp), %rax
movq %rax, -16(%rbp)
movq -24(%rbp), %rax
movq %rax, -8(%rbp)
movl $0, %eax
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE0:
.size main, .-main
.ident "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-3)"
.section .note.GNU-stack,"",@progbits
通过汇编代码可以知道:其实引用是分配了地址的,只是编译器给过滤处理了。
- c++引用和指针,不为人知的秘密。
- mutex和semaphore不为人知的秘密
- 网页不为人知的秘密
- CSDN不为人知的秘密
- jquery不为人知的秘密
- Eclipse不为人知的秘密
- SendMessage不为人知的秘密
- 不为人知的秘密
- ViewPager不为人知的秘密
- ViewPager不为人知的秘密
- ViewPager不为人知的秘密
- ViewPager不为人知的秘密
- ViewPager不为人知的秘密
- c的指针*和引用&
- [C++] 引用和指向指针的引用
- Eclipse Debug不为人知的秘密
- Eclipse Debug不为人知的秘密
- Eclipse Debug不为人知的秘密
- 公共祖先问题
- xml_shape
- 哈理工oj 2035 Diablo【BFS+DFS】
- 一个字符串中,找到出现次数最多的字符
- 样式布局分享-基于frozen.js的移动OA
- c++引用和指针,不为人知的秘密。
- 「每周review」关于Emacs的学习XMind
- Volley源码学习(二):网络请求处理,HurlStack类,BasicNetwork类,ByteArrayPool,PoolingByteArrayOutputStream
- HTTP multipart/form-data格式之文件上传
- 快速排序
- 关于Opencv图像的转换(YUV420sp)
- LINQ
- Java设计模式之单例(Singleton)模式
- poj 3420 Quad Tiling 状压dp+矩阵快速幂