【问题标题】:Changing a const variable with a pointer c++ [duplicate]用指针c ++更改const变量[重复]
【发布时间】: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

【问题讨论】:

    标签: c++ pointers constants


    【解决方案1】:

    您的程序的行为是未定义看起来可能是这种未定义行为的表现。

    您不能尝试使用由const_cast 获得的非const 指针(或引用)来更改声明为const 的变量的值。

    (如果它在这种情况下似乎有效,请尝试使用只读字符串文字的等效项 - 这将导致很多平台上的崩溃。)

    【讨论】:

    • 吹毛求疵:如果行为未定义,你不能说它不可能。未定义的行为,顾名思义,不能排除任何行为;)
    • @el.pescado:是的,精度很重要。我已经修改了。
    猜你喜欢
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多