用指针c ++更改const变量[重复]
Posted
技术标签:
【中文标题】用指针c ++更改const变量[重复]【英文标题】:Changing a const variable with a pointer c++ [duplicate] 【发布时间】:2017-08-03 11:57:37 【问题描述】:看看这个程序:
int main()
const int a_const=10;
int * const a=const_cast<int * const>(&a_const);
*a=5;
所以a_const
的地址和指针a
的值相同。
但是改变a
所指向的值,不会改变a_const
。
【问题讨论】:
【参考方案1】:您的程序的行为是未定义。 看起来可能是这种未定义行为的表现。
您不能尝试使用由const_cast
获得的非const
指针(或引用)来更改声明为const
的变量的值。
(如果它在这种情况下似乎有效,请尝试使用只读字符串文字的等效项 - 这将导致很多平台上的崩溃。)
【讨论】:
吹毛求疵:如果行为未定义,你不能说它不可能。未定义的行为,顾名思义,不能排除任何行为;) @el.pescado:是的,精度很重要。我已经修改了。以上是关于用指针c ++更改const变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章
使用Visual Studio 2017学习c ++ [重复]