C语言中,变量存储空间如何分配
大家好,我在程序开头定义了一些全局变量,定以后,发现自己也搞不清楚它们在运行时被分配到什么位置,所以请大家讲解下,谢谢!
1.宏定义,程序运行,存放到什么位置?什么时候占用内存?什么时候释放?以下宏定义都相同吗?
#define UCHAR unsigned char //UCHAR是简写,可以用其它非c语言关键字词代替
typedef UINT FLADDR;
#define FLASH_PAGESIZE 512
2.以下位变量的定义,存放到什么位置?什么时候占用内存呢?什么时候释放?以下是否都相同?
sfr16 TMR3 = 0x94; //定时器3计数寄存器
sbit RFTE= P1^6;
volatile bit quitRFRX=0;
bit EA_SAVE=0;
3.以下是变量、数组和函数的定义,问题同上
UCHAR code CmdT[] ={0};
UCHAR code CmdTransOK[] = "OKOKOK";
code UCHAR TAddress[] ={'0','A','0','0','0','0','1','0','0','1'};
xdata UCHAR TerInformation[10] ={0};
UCHAR numbytes_remainder; // when crossing page boundary,
UCHAR xdata * data pwrite; // FLASH write pointer
UCHAR code * data pread; // FLASH read pointer
volatile UCHAR TXFIFO_Len=0;
void WDT_Init(void); //看门狗定时器初始化函数
被定义时加在变量前的限定词搞蒙了,网上也没找到系统介绍这类知识的文章,有好的文章请大家推荐,谢谢!