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