64,636
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
const int a = 10;
int *p = (int *) &a;
cout<< *p <<" " <<a << endl;
cout <<p << " " << &a << endl; //你应该输出a的地址看看是否与p所指的地址依旧相同
*p = 20;
cout <<*p <<" " <<a << endl;
cout <<p << " " <<&a << endl; // 正如楼上所说,p所指的地址没有变化,但p的内容变化了
//在编译时 const类型的全被用具体的值给代替了
return 0;
}
5: const int a = 10;
0040307D mov dword ptr [a],0Ah
6: int *p = (int *) &a;
00403084 lea eax,[a]
00403087 mov dword ptr [p],eax
7: cout << *p << " " << a << endl;
0040308A push edi
0040308B mov eax,offset stlp_std::cout (004b6c60)
00403090 mov edx,dword ptr [p]
00403093 mov edx,dword ptr [edx]
00403095 mov dword ptr [esp],edx
00403098 mov ecx,eax
0040309A call @ILT+10(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040100
0040309F mov dword ptr [ebp-30h],eax
004030A2 add esp,0FFFFFFF8h
004030A5 mov eax,dword ptr [ebp-30h]
004030A8 mov dword ptr [esp],eax
004030AB mov dword ptr [esp+4],offset stlp_std::locale::collate+0FFFFFFECh (004ba53c)
004030B3 call @ILT+220(stlp_std::operator<<) (004010e1)
004030B8 add esp,8
004030BB mov dword ptr [ebp-2Ch],eax
004030BE push edi
004030BF mov dword ptr [esp],0Ah
004030C6 mov eax,dword ptr [ebp-2Ch]
004030C9 mov ecx,eax
004030CB call @ILT+10(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040100
004030D0 mov dword ptr [ebp-28h],eax
004030D3 push edi
004030D4 mov dword ptr [esp],offset @ILT+5(stlp_std::endl) (0040100a)
004030DB mov eax,dword ptr [ebp-28h]
004030DE mov ecx,eax
004030E0 call @ILT+165(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (004010
8: cout << p << " " << &p << endl;
004030E5 push edi
004030E6 mov eax,offset stlp_std::cout (004b6c60)
004030EB mov edx,dword ptr [p]
004030EE mov dword ptr [esp],edx
004030F1 mov ecx,eax
004030F3 call @ILT+50(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040103
004030F8 mov dword ptr [ebp-24h],eax
004030FB add esp,0FFFFFFF8h
004030FE mov eax,dword ptr [ebp-24h]
00403101 mov dword ptr [esp],eax
00403104 mov dword ptr [esp+4],offset stlp_std::locale::collate+0FFFFFFF0h (004ba540)
0040310C call @ILT+220(stlp_std::operator<<) (004010e1)
00403111 add esp,8
00403114 mov dword ptr [ebp-20h],eax
00403117 push edi
00403118 lea eax,[p]
0040311B mov dword ptr [esp],eax
0040311E mov eax,dword ptr [ebp-20h]
00403121 mov ecx,eax
00403123 call @ILT+50(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040103
00403128 mov dword ptr [ebp-1Ch],eax
0040312B push edi
0040312C mov dword ptr [esp],offset @ILT+5(stlp_std::endl) (0040100a)
00403133 mov eax,dword ptr [ebp-1Ch]
00403136 mov ecx,eax
00403138 call @ILT+165(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (004010
9: *p = 20;
0040313D mov eax,dword ptr [p] ;//------
00403140 mov dword ptr [eax],14h ;//-------
10: cout << *p << " " << a << endl;
00403146 push edi
00403147 mov eax,offset stlp_std::cout (004b6c60)
0040314C mov edx,dword ptr [p]
0040314F mov edx,dword ptr [edx]
00403151 mov dword ptr [esp],edx
00403154 mov ecx,eax
00403156 call @ILT+10(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040100
0040315B mov dword ptr [ebp-18h],eax
0040315E add esp,0FFFFFFF8h
00403161 mov eax,dword ptr [ebp-18h]
00403164 mov dword ptr [esp],eax
00403167 mov dword ptr [esp+4],offset stlp_std::locale::collate+0FFFFFFF4h (004ba544)
0040316F call @ILT+220(stlp_std::operator<<) (004010e1)
00403174 add esp,8
00403177 mov dword ptr [ebp-14h],eax
0040317A push edi
0040317B mov dword ptr [esp],0Ah;//---------------
00403182 mov eax,dword ptr [ebp-14h]
00403185 mov ecx,eax
00403187 call @ILT+10(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040100
0040318C mov dword ptr [ebp-10h],eax
0040318F push edi
00403190 mov dword ptr [esp],offset @ILT+5(stlp_std::endl) (0040100a)
00403197 mov eax,dword ptr [ebp-10h]
0040319A mov ecx,eax
0040319C call @ILT+165(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (004010
11: cout << p << " " << &p << endl;
004031A1 push edi
004031A2 mov eax,offset stlp_std::cout (004b6c60)
004031A7 mov edx,dword ptr [p]
004031AA mov dword ptr [esp],edx
004031AD mov ecx,eax
004031AF call @ILT+50(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040103
004031B4 mov dword ptr [ebp-0Ch],eax
004031B7 add esp,0FFFFFFF8h
004031BA mov eax,dword ptr [ebp-0Ch]
004031BD mov dword ptr [esp],eax
004031C0 mov dword ptr [esp+4],offset stlp_std::locale::collate+0FFFFFFF8h (004ba548)
004031C8 call @ILT+220(stlp_std::operator<<) (004010e1)
004031CD add esp,8
004031D0 mov dword ptr [ebp-8],eax
004031D3 push edi
004031D4 lea eax,[p]
004031D7 mov dword ptr [esp],eax
004031DA mov eax,dword ptr [ebp-8]
004031DD mov ecx,eax
004031DF call @ILT+50(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (0040103
004031E4 mov dword ptr [ebp-4],eax
004031E7 push edi
004031E8 mov dword ptr [esp],offset @ILT+5(stlp_std::endl) (0040100a)
004031EF mov eax,dword ptr [ebp-4]
004031F2 mov ecx,eax
004031F4 call @ILT+165(stlp_std::basic_ostream<char,stlp_std::char_traits<char> >::operator<<) (004010
12: return 0;