常量传递1

<pre name="code" class="cpp">const int i = 12;
int *j = const_cast<int*>(&i);

*j = 13;
cout << *j << endl;
cout << i << endl;


 

输出:13 12

const int i = 12;
0095466A  mov         dword ptr [i],0Ch  
	int *j = const_cast<int*>(&i);
00954671  lea         eax,[i]  
00954674  mov         dword ptr [j],eax  

	*j = 13;
00954677  mov         eax,dword ptr [j]  
0095467A  mov         dword ptr [eax],0Dh  
	cout << *j << endl;
00954680  mov         esi,esp  
00954682  mov         eax,dword ptr [__imp_std::endl (95A330h)]  
00954687  push        eax  
00954688  mov         edi,esp  
0095468A  mov         ecx,dword ptr [j]  
0095468D  mov         edx,dword ptr [ecx]  
0095468F  push        edx  
00954690  mov         ecx,dword ptr [__imp_std::cout (95A32Ch)]  
00954696  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (95A334h)]  
0095469C  cmp         edi,esp  
0095469E  call        @ILT+420(__RTC_CheckEsp) (9511A9h)  
009546A3  mov         ecx,eax  
009546A5  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (95A31Ch)]  
009546AB  cmp         esi,esp  
009546AD  call        @ILT+420(__RTC_CheckEsp) (9511A9h)  
	cout << i << endl;
009546B2  mov         esi,esp  
009546B4  mov         eax,dword ptr [__imp_std::endl (95A330h)]  
009546B9  push        eax  
009546BA  mov         edi,esp  
009546BC  push        0Ch
009546BE  mov         ecx,dword ptr [__imp_std::cout (95A32Ch)]  
009546C4  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (95A334h)]  
009546CA  cmp         edi,esp  
009546CC  call        @ILT+420(__RTC_CheckEsp) (9511A9h)  
009546D1  mov         ecx,eax  
009546D3  call        dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (95A31Ch)]  
009546D9  cmp         esi,esp  
009546DB  call        @ILT+420(__RTC_CheckEsp) (9511A9h)  


看到反汇编的代码可以看到,输出 i 的时候直接替换为了 0Ch (009546BC地址地方)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值