看到这段代码,指针和引用我又迷茫了。。。。

fzamygsd 2012-06-02 03:49:29

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++,请大牛们指点。。。。
...全文
291 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
beckhanyan 2012-06-04
  • 打赏
  • 举报
回复
还是有点差别的。。指针能重绑定,引用就不行了
BadPattern 2012-06-04
  • 打赏
  • 举报
回复
有了二楼的回复,你可以结帖了
BadPattern 2012-06-04
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

C/C++相对其对应汇编指令而言:
指针即地址
引用即别名
[/Quote]
究级拔刀流要来喷你了
赵4老师 2012-06-04
  • 打赏
  • 举报
回复
C/C++相对其对应汇编指令而言:
指针即地址
引用即别名
fzamygsd 2012-06-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你的迷茫来源于从错误的方向去理解语言抽象,从底层实现的角度是无法理解何为指针、何为引用的,因为在实现的过程中抽象语义被剥离,你所看到的东西已经不是本来的指针、本来的引用了!
[/Quote]

二楼教训的是,,,,,
fzamygsd 2012-06-03
  • 打赏
  • 举报
回复
是不是引用能做的指针都能完成?

我的疑问是一个相当于a一个相当于&a相似但不应该相同阿,,,,,,,它们格式都一样

还是我应该好好看看汇编书?

wizard_tiger 2012-06-02
  • 打赏
  • 举报
回复
当然相似,引用就是指针来实现的。
TPMer 2012-06-02
  • 打赏
  • 举报
回复
目测是汇编代码。。。。表示不懂。。。
飞天御剑流 2012-06-02
  • 打赏
  • 举报
回复
你的迷茫来源于从错误的方向去理解语言抽象,从底层实现的角度是无法理解何为指针、何为引用的,因为在实现的过程中抽象语义被剥离,你所看到的东西已经不是本来的指针、本来的引用了!
W170532934 2012-06-02
  • 打赏
  • 举报
回复
相似是因为其实引用内部是用指针来实现的。只不过为了让你觉得安全,给起了个别名。指针让大牛来做,错误相对来说可以减到最少了。不然让我们菜鸟来用指针,各种内存泄露,各种崩溃。

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧