关于 reinterpret_cast 后指针访问的结果

hello,world,我有一个关于 reinterpret_cast 的问题:

我的理解:reinterpret_cast 是对指针或者引用地址指向的数据的重解释,所以更新指针指向地址的值是可以的。但是为什么下面的例子,更新 int 指针的值并没有更新 double 原类型的值:

void func2() {

    double d_num = 100.12;

    double *pd_num = &d_num;

    int *pi_num = reinterpret_cast<int*>(pd_num);

    double *pd_num2 = reinterpret_cast<double*>(pi_num);

    cout << &d_num << endl << pd_num << endl << pi_num << endl << pd_num2 << endl;

    cout << "原始" << endl;

    cout << *pd_num << endl;

    cout << *pi_num << endl;

    cout << *pd_num2 << endl;

    *pi_num = 444;

    cout << "更改整形" << endl;

    cout << *pd_num << endl;

    cout << *(int*)(double*)pi_num << endl;

    cout << *pd_num2 << endl;

    *pd_num2 = 60.4;

    cout << "更改浮点型" << endl;

    cout << *pd_num << endl;

    cout << *pi_num << endl;

    cout << *pd_num2 << endl;

}

 

输出结果:

func2
0x7ffe1dd8f088
0x7ffe1dd8f088
0x7ffe1dd8f088
0x7ffe1dd8f088
原始
100.12
343597384
100.12
更改整形 // (*整型指针 = 444)
100.12
444
100.12
更改浮点型  //(*浮点型指针=60.4)
60.4
858993459 
60.4