老师,我想问下,用const_cast给*pa赋值之后,为什么cout出来a和*pa的值不同而pa和&a的值相同?即值不同而地址却相同
来源:9-8 const_cast的使用

ExcellentMiao
2020-11-19
老师,我想问下,用const_cast给*pa赋值之后,为什么cout出来a和*pa的值不同而pa和&a的值相同?即值不同而地址却相同
写回答
1回答
-
其实如果你能跟踪汇编会看得很清楚。这里pA指向a的地址没问题,所以&a和pA是相等的,修改pA所指内存的值,a内存处的值已经变了。当你再使用a的值时,由于定义的是const int a, 根据约定a的值定义了不能变,于是编译器会记录下a原来的值,当你使用时会直接赋值;而不再使用此时a内存里的值。所以你cout会看到a的值没有变,但实际内存的值已经变了。
462022-08-22
相似问题