关于c++ 中的const 这是什么情况?
如下代码:
const int n = 1;
int n1, n2 = 3;
int *p = (int*)&n;
*p = 2;
n1 = n;
n1 = n2;
int nSize = sizeof(n);
int nSize1 = sizeof(n1);
在int n = 1处加断点1
在n1 = n;处加断点2
然后执行程序到断点1处 查看内存&n内存储的是1
运行到断点2处 查看内存&n内存储的值编程了2
接着往下运行n1 = n发现n1 = 1 此时查看&n内存储的值还是2
接着运行nSize = 4
下面是反汇编
const int n = 1;
0041139E mov dword ptr [n],1
int n1, n2 = 3;
004113A5 mov dword ptr [n2],3
int *p = (int*)&n;
004113AC lea eax,[n]
004113AF mov dword ptr [p],eax
*p = 2;
004113B2 mov eax,dword ptr [p]
004113B5 mov dword ptr [eax],2
n1 = n;
004113BB mov dword ptr [n1],1
n1 = n2;
004113C2 mov eax,dword ptr [n2]
004113C5 mov dword ptr [n1],eax
int nSize = sizeof(n);
004113C8 mov dword ptr [nSize],4
int nSize1 = sizeof(n1);
004113CF mov dword ptr [nSize1],4
看这两句对比
n1 = n;
004113BB mov dword ptr [n1],1
n1 = n2;
004113C2 mov eax,dword ptr [n2]
004113C5 mov dword ptr [n1],eax
TN的 貌似编译器直接给那个n1赋了个1,根本就没有从&n里去取数据,那为什么还要给n分配内存呢?