采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,我想问下,用const_cast给*pa赋值之后,为什么cout出来a和*pa的值不同而pa和&a的值相同?即值不同而地址却相同
其实如果你能跟踪汇编会看得很清楚。这里pA指向a的地址没问题,所以&a和pA是相等的,修改pA所指内存的值,a内存处的值已经变了。当你再使用a的值时,由于定义的是const int a, 根据约定a的值定义了不能变,于是编译器会记录下a原来的值,当你使用时会直接赋值;而不再使用此时a内存里的值。所以你cout会看到a的值没有变,但实际内存的值已经变了。
非常感谢!
真棒👍
这种特性存在岂不是很坑
登录后可查看更多问答,登录/注册
一部大片,一段历史,构建C++知识框架的同时重塑你的编程思维
1.3k 12
1.2k 12
1.4k 10
1.2k 9
1.1k 9