反汇编->C++引用与指针
2024-08-23 09:39:46
先看一段最简单代码
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int temp = 10;
int *point = &temp;
int &ref = temp;
system("pause");
}
反汇编结果
int temp = 10;
012718E8 mov dword ptr [temp],0Ah
int *point = &temp;
012718EF lea eax,[temp] ;将temp变量的地址赋给eax
012718F2 mov dword ptr [point],eax ;将eax的值赋给point指针
int &ref = temp;
012718F5 lea eax,[temp] ;将temp变量的地址赋给eax
012718F8 mov dword ptr [ref],eax ;将eax的值赋给ref引用
从反汇编结果可知.其实引用的底层实现就是指针常量罢了.不过引用是指针常量(必须初始化.不能只声明).
指针可以被重新赋值而引用则总是指向最初或地的对象.指针跟引用一样可以改变
引用是有地址的,是一种编译器管理的指针,引用并不是只有一个别名,他其实说到底还是一个指针,只不过有些事情编译器替你做了而已
最新文章
- Yii2中多表关联查询(join、joinwith)
- C++ 中 int 转string, 以及10进制转2进制
- Boost练习程序(multi_index_container)
- Shell中set用法(转载)
- js函数、表单验证
- MySQL表设计基础
- system strategies of Resources Deadlock
- iOS网络基础
- [题解]N 皇后问题总结
- tex中pdf外链
- Confluence 6 使用 JConsole 监控本地 Confluence
- 03. Pandas 2| 时间序列
- c# 号码记录,车友
- MySQL:字符串字段加索引
- oracle 实例名,数据库名概念
- 【Python】生成词云
- Installing Oracle Database 12c Release 2(12.2) RAC on RHEL7.3 in Silent Mode
- java插件之Lombok
- 以太坊go-ethereum常见问题汇总
- storm配置:如何解决worker进程内存过小的问题