看到这段代码,指针和引用小弟我又迷茫了。
看到这段代码,指针和引用我又迷茫了。。。。Assembly codeint a32004115EEmovdword ptr [a],20hint &raa00
看到这段代码,指针和引用我又迷茫了。。。。
Assembly code int a=32;004115EE mov dword ptr [a],20h int &ra=a;004115F5 lea eax,[a] 004115F8 mov dword ptr [ra],eax int *pa=&a;004115FB lea eax,[a] 004115FE mov dword ptr [pa],eax ra=48;00411601 mov eax,dword ptr [ra] 00411604 mov dword ptr [eax],30h *pa=64;0041160A mov eax,dword ptr [pa] 0041160D mov dword ptr [eax],40h
1.一个是存放地址,一个是别名,它们的行为怎么会那么相似呢
2.而且如何写小小的一段代码反汇编时能看出它们的差异呢,
我汇编学的也不太好,这学期刚学C++,请大牛们指点。。。。
[解决办法]相似是因为其实引用内部是用指针来实现的。只不过为了让你觉得安全,给起了个别名。指针让大牛来做,错误相对来说可以减到最少了。不然让我们菜鸟来用指针,各种内存泄露,各种崩溃。
[解决办法]你的迷茫来源于从错误的方向去理解语言抽象,从底层实现的角度是无法理解何为指针、何为引用的,因为在实现的过程中抽象语义被剥离,你所看到的东西已经不是本来的指针、本来的引用了!
[解决办法]目测是汇编代码。。。。表示不懂。。。
[解决办法]当然相似,引用就是指针来实现的。
[解决办法]有了二楼的回复,你可以结帖了
[解决办法]还是有点差别的。。指针能重绑定,引用就不行了
[解决办法]C/C++相对其对应汇编指令而言:
指针即地址
引用即别名