AVR单片机中C语言指针方面的问题

来源:百度知道 编辑:UC知道 时间:2024/05/15 12:44:25
其中相关的程序段是这样的:
#define ADR(x) (*(volatile unsigned char *)ADR_8254_ARRAY[(x)])
uint16_t ADR_8254_ARRAY[4] = {0xFF00 , 0xFF01 , 0xFF02 , 0xFF03};
ADR(3)=0x32;
ADR(3)=0x72;
这是两语句访问的是什么地址啊??

#define ADR(x) (*(volatile unsigned char *)ADR_8254_ARRAY[(x)])
uint16_t ADR_8254_ARRAY[4] = {0xFF00 , 0xFF01 , 0xFF02 , 0xFF03};
ADR(3)=0x32;
ADR(3)=0x72;

相当于将存储器地址为0xff03的地址里存放一个字节型指针0x32,然后又将0xff03地址中所存的指针0x32用0x72替代.
最终效果就是:
0xff03地址中所存的又是一个地址,0x72