1. 程式人生 > >c++:一個記憶體地址,居然可以存在兩個不同的值

c++:一個記憶體地址,居然可以存在兩個不同的值


#include<iostream>
using namespace std;
int main()
{
    const int a = 10;
    const int * p = &a;
    int *q;
    q = const_cast<int *>(p);
    *q = 20;    //fine
    cout <<a<<" "<<*p<<" "<<*q<<endl;
    cout <<&a<<" "<<p<<" "<<q<<endl;
    return 0;
}


執行結果:
10 20 20
002CFAF4 002CFAF4 002CFAF4

const 型別的變數,也叫做常量。
既然是常量,編譯器就可以直接用字面值代替變數。
比如:cout<<a<<....
編譯器可以直接編譯為cout<<10<<...

參考網址:https://bbs.csdn.net/topics/392270821