将非常量指针赋值更改为常量指针

时间:2018-05-27 20:57:38

标签: c++ pointers const

虽然我将const int指定给简单的int指针(通过类型转换),然后更改指针的值。现在指针给我更新的值,但const int给出了相同的!有人可以解释一下这里发生了什么吗?

以下是示例代码:

int main() {
    const int val = 5;
    int *p = (int*)&val;
    cout<<"val: "<<val<<endl;
    cout<<"*p: "<<*p<<endl;
    *p = 64;
    cout<<"*p: "<<*p<<endl;
    cout<<"val: "<<val<<endl;

    cout<<"p: "<<p<<endl;
    cout<<"&val: "<<&val<<endl;

    int *p1 = (int*)&val;
    cout<<"*p1: "<<*p1<<endl;

    const int *p2 = &val;
    cout<<"*p2: "<<*p2<<endl;

    return 0;
}

这是输出:

val: 5
*p: 5
*p: 64
val: 5
p: 0x7ffcb2de795c
&val: 0x7ffcb2de795c
*p1: 64
*p2: 64

这里要点是,存储在“p”中的地址与“val”的地址相同。我们分配的任何后来的指针(甚至是const int *)都反映了改变的值而不是原始的。

0 个答案:

没有答案