使用指针c ++更改const变量

Gra*_*ner -2 c++ pointers const

看看这个程序:

int main(){
    const int a_const=10;
    int * const a=const_cast<int * const>(&a_const);
    *a=5;
}
Run Code Online (Sandbox Code Playgroud)

因此,地址a_const和指针 a具有相同的值.但改变a指向的价值,却没有a_const.

Bat*_*eba 5

程序的行为未定义.它出现的是可能是不确定的行为的一种表现.

const通过使用const由于a而获得的非指针(或引用),不允许您尝试更改声明为的变量的值const_cast.

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