用指针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变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode:无重复字符的最长子串(C语言版)

LeetCode:无重复字符的最长子串(C语言版)

C字符串指针与数组[重复]

使用Visual Studio 2017学习c ++ [重复]

如果使用引用的目的是更改原始变量的值,为啥要使用 const 引用传递? [C++] [重复]

传递参数以更改#define变量[重复]