呵呵,应该很多人做过这个事,好奇心来了没办法,不过可不能用在实际编程上哟
不记得哪位大师说过:试图欺骗编译器的人终会自食恶果。
不过要说明下,用const修饰的变量(这是一个假常量),本质上其实和未用const修饰的变量是没有差别的
用const修饰变量后,只是编译器会检查是否对该变量进行了写操作,若检查出则会报错
代码如下:
#include<iostream>
using namespace std;
int main(int argc,char* argv[])
{
const int a=3;
const int *pt=&a;
int tmp=(int)pt;
int* pt1=(int*)tmp;
*pt1=100;
// 仍然输出的是3,这跟从寄存器中取值有关
cout<<a<<endl;
// 输出100,因为是从内存中取得的值
cout<<*pt<<endl;
// 同上
cout<<*pt1<<endl;
cin.get();
cin.get();
return 0;
}