首页
社区
课程
招聘
[求助]关于C++函数中引用的传递
发表于: 2010-9-2 11:05 4408

[求助]关于C++函数中引用的传递

2010-9-2 11:05
4408
今天在C++课上突然想到了这个问题,引用的传递到底传递的是什么?小弟反汇编工具用的不熟练,就只能靠VC提供的反汇编了。
        写了一段测试代码:
       
#include <iostream>
	using namespace std;
	
	bool Swap(int &a, int &b)
	{
		int temp = a;
		a = b;
		b = temp;
		return true;
	}
	
	int main()
	{
		int m = 1;
		int n = 2;
	
		Swap(m, n);
		cout<<"m:"<<m<<endl;
		cout<<"n:"<<n<<endl;
		return 0;
	}
       
        主函数中调用函数部分的反汇编是:
       
	Swap(m, n);
	0022154C  lea         eax,[n] 
	0022154F  push        eax  
	00221550  lea         ecx,[m] 
	00221553  push        ecx  
	00221554  call        Swap (221131h) 
	00221559  add         esp,8 
	
        Swap函数的反汇编是:
       
bool swap(int &a, int &b)
	{
	010414C0  push        ebp  
	010414C1  mov         ebp,esp 
	010414C3  sub         esp,0CCh 
	010414C9  push        ebx  
	010414CA  push        esi  
	010414CB  push        edi  
	010414CC  lea         edi,[ebp-0CCh] 
	010414D2  mov         ecx,33h 
	010414D7  mov         eax,0CCCCCCCCh 
	010414DC  rep stos    dword ptr es:[edi] 
		int temp = a;
	010414DE  mov         eax,dword ptr [a] 
	010414E1  mov         ecx,dword ptr [eax] 
	010414E3  mov         dword ptr [temp],ecx 
		a = b;
	010414E6  mov         eax,dword ptr [a] 
	010414E9  mov         ecx,dword ptr [b] 
	010414EC  mov         edx,dword ptr [ecx] 
	010414EE  mov         dword ptr [eax],edx 
		b = temp;
	010414F0  mov         eax,dword ptr [b] 
	010414F3  mov         ecx,dword ptr [temp] 
	010414F6  mov         dword ptr [eax],ecx 
		return true;
	010414F8  mov         al,1 
	}
	010414FA  pop         edi  
	010414FB  pop         esi  
	010414FC  pop         ebx  
	010414FD  mov         esp,ebp 
	010414FF  pop         ebp  
	01041500  ret             

       
        看样子还是把m和n的地址传入到了函数中,这样理解对吗?
        是不是引用只是编译器的一种对数据的抽象处理方法,具体实现是靠的传地址?
        谢谢各位了!

[培训]科锐软件逆向54期预科班、正式班开始火爆招生报名啦!!!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
回去看C指针和引用去...
吧.
那个看熟透了,你的理解只然会解开,.
2010-9-18 10:47
0
游客
登录 | 注册 方可回帖
返回