菜鸟的疑问 关于const代码如下:voidmain(){constinti12int*pIntconst_cast int* (&i)*pInt15cout
菜鸟的疑问 关于const
代码如下:
void main()
{
const int i = 12;
int *pInt = const_cast <int*> (&i);
*pInt = 15;
cout < < "i = " < <i < <endl;
cout < < "*pInt = " < <*pInt < <endl;
}
运行结果:
i = 12;
*pInt = 15;
结果符合逻辑, 常量当然不能修改其值, 疑问是const变量的内存分配在哪里,
pInt指针指向的又是什么?
[解决办法]
const变量的内存分配在哪里
===========================
通常const变量在编译的时候已经被具体的值取代了。
pInt指针指向的又是什么
===========================
你硬要取const变量的地址,编译器会给你一个地址,但是修改它的值不起任何作用
[解决办法]
视编译器处理不同方式,一般的方式是,const量在编译的时候,
填写在了符号表,不分配的内存,当你取地址时,
编译器会给你个地址,告诉你了这块地址处内存的值不能修改,事实上这块内存中的值随机,
你const_cast赋值这块内存,对符号表中值不存在影响
希望说清楚了
