volatile uint8 const u8_default = 0xA5;
volatile uint8 *const uP_1 = &u8_default; //Const 修饰指针变量,所以uP_1的地址是只读(Flash)
volatile uint8 const *uP_2 = &u8_default; //Const 修饰*,所以uP_2可以修改,uP_2指向的地址不能修改
int main(void)
{
uP_2 = &uP_1;
uP_2 = uP_1;
uP_2 = *uP_1;
}
Case_1: 程序运行到47行(47行还没运行):
- u8_default 地址 = 0x80000039, value = 0xA5 ,//地址是PFlash地址,因为u8_default 使用Const修饰,所以是常数。
- uP_1 = 0x80000028 //uP_1 地址
- uP_2 = 0x7000002C //uP_2地址
- *uP_1 = 0x80000039 //Default init value
- *uP_2 = 0x80000039 //Default init value
Case_2: 程序运行到49行(49行还没运行):
- u8_default 地址 = 0x80000039, value = 0xA5 ,//地址是PFlash地址,因为u8_default 使用Const修饰,所以是常数。
- uP_1 = 0x80000028 //uP_1 地址
- uP_2 = 0x7000002C //uP_2地址
- *uP_1 = 0x80000039 //Default init value
- *uP_2 = 0x80000028 //uP_1的地址
Case_3: 程序运行到51行(51行还没运行):
- u8_default 地址 = 0x80000039, value = 0xA5 ,//地址是PFlash地址,因为u8_default 使用Const修饰,所以是常数。
- uP_1 = 0x80000028 //uP_1 地址
- uP_2 = 0x7000002C //uP_2地址
- *uP_1 = 0x80000039 //Default init value
- *uP_2 = 0x80000039 //uP_1指向的地址
-
Case_4: 程序运行完51行:
- u8_default 地址 = 0x80000039, value = 0xA5 ,//地址是PFlash地址,因为u8_default 使用Const修饰,所以是常数。
- uP_1 = 0x80000028 //uP_1 地址
- uP_2 = 0x7000002C //uP_2地址
- *uP_1 = 0x80000039 //Default init value
- *uP_2 = 0xA5 //uP_1指向的地址里存储的数据