c++ const有关问题
c++ const问题
const int ca = 9;
const int * b = &ca;
cout << ca << *(&ca) << *b << endl;
*(const_cast<int *>(b)) = 12;
cout << ca << *(&ca) << *b << endl;
输出结果 9 9 9
9 9 12
这段代码中将const指针去掉const属性后,可以修改值,但是ca的值一直不变,但是ca所在地址的值确实修改了...所以想问问const int ca是怎么存储的?为什么会出现这种情况
分数不多了,还请大侠们不吝赐教
------解决方案--------------------
有的编译器会直接把 ca 替换为9, 毕竟c++里建议用 const int a=9; 替代 #define a 9
------解决方案--------------------
常量折叠说的是,在编译阶段,对该变量进行值替换,同时,该常量拥有自己的内存空间,并非像宏定义一样不分配空间,需澄清这点
const int ca = 9;
const int * b = &ca;
cout << ca << *(&ca) << *b << endl;
*(const_cast<int *>(b)) = 12;
cout << ca << *(&ca) << *b << endl;
输出结果 9 9 9
9 9 12
这段代码中将const指针去掉const属性后,可以修改值,但是ca的值一直不变,但是ca所在地址的值确实修改了...所以想问问const int ca是怎么存储的?为什么会出现这种情况
分数不多了,还请大侠们不吝赐教
c++
存储
指针
const
------解决方案--------------------
有的编译器会直接把 ca 替换为9, 毕竟c++里建议用 const int a=9; 替代 #define a 9
------解决方案--------------------
常量折叠说的是,在编译阶段,对该变量进行值替换,同时,该常量拥有自己的内存空间,并非像宏定义一样不分配空间,需澄清这点