更改常量变量的指针C++
问题描述:
看此程序:更改常量变量的指针C++
int main(){
const int a_const=10;
int * const a=const_cast<int * const>(&a_const);
*a=5;
}
所以的a_const
地址和指针a
具有相同的值。 但改变a
指向的值,不是a_const
。
答
程序的行为是undefined。它出现可能是未定义行为的表现。
通过使用作为const_cast
的结果获得的非const
指针(或引用),您不得试图更改声明为const
的变量的值。
(如果它出现在这种情况下工作,尝试用只读字符串字面的等价物 - 这将导致很多平台的崩溃)
鸡蛋里挑骨头:如果行为是*不确定*,你可以不说*它不可能*。根据定义,未定义的行为不能排除任何行为;) –
@ el.pescado:是的,精度很重要。我修改了。 – Bathsheba