假设一个带有 const char *p参数的函数 在此函数中 p指向一个全局变量(p=&a) 然后我在中断里给此全局变量赋值(a=1)
如果程序执行到此函数中 并已经p=&a 然后程序恰好进入了中断 执行a=1
会出现什么现象?会赋值失败吗?会程序崩溃吗?
单片机在读取数据的时候肯能已经把a的值读出来放在一个通用寄存器里。如果这时候发生中断,这个寄存器应该会被压栈,执行完中断之后弹出的是修改之前的值。
程序不会崩溃,但是出现这种不是你想要的结果。
所以这种资源的访问必须做到互斥 。或者函数里进行操作的时候关中断。
不会赋值失败的,
const char *p 是指p的值不能重复赋值,而是固定&a了,而a的值是可以随便改动的。
这没有冲突啊。