*(unsigned int *)addr = type是什么意思为什么要这样写

 ###### 问题遇到的现象和发生背景
*(unsigned int *)addr = type是什么意思为什么要这样写
 ###### 问题相关代码,请勿粘贴截图
有些人说是两个星号抵消了
 ###### 运行结果及报错内容

 ###### 我的解答思路和尝试过的方法

 ###### 我想要达到的结果

(unsigned int *)

是强制类型转换,把它先转换成int型的指针
转换之后,再用*去访问它的地址
抵消不了
addr本来是个int型的变量,它保存的是一个地址
如果直接给addr赋值,那addr本身的值被改变了
而如果先强制成指针,再寻址,那改变的是它对应地址的那个内存

这种写法的作用是对某个指定地址进行直接的读写操作,是一种比较底层的操作方式,通常这些地址是硬件寄存器,对普通RAM空间进行这种操作可能导致无法预料的后果。为了防止被优化,一般还要对指针加个volatile修饰。