const 修饰的小看点(自己积点小知识)

const int x = 50; 
    int* y = (int *)(&x);// same address, but the content is different 
    *y = 200; 
    cout << "x: "<<x<<" address: "<<&x<<endl; 
    cout << "*y: "<<*y<<" address:  "<<y<<endl; 
    cout<<endl;

为什么相同的地址 内容却不相同

const int x = 50;

这是因为 x在声明时加上了const, 所以 ,

这时,x定义为50 成了定值,也可以说是只读常量,就是x的值不能被修改,

int *y = (int *)(&x);

这句程序,因为取的是x的地址,将y的指向同样指向了x的地址;(但这点x的值并没有付给y,是y指向了x的地址)

*y=200;

这点将*y的值 改成了200,但是y还是指向x的地址,这就相当于将两只手同时指向一个人,但是,一个是左手,一个是右手。

所以,输出时,x与*y的值不同,但是因为他们的指向地址相同,所以地址输出后相同

这是我自己的看法!希望大家说下自己的看法

原文地址:https://www.cnblogs.com/aiyq195/p/3584405.html