何为变量?
变量一般可以细分为如下图:
![b39d5030ca0b7da8b9b69d0db437064e.png](https://img-blog.csdnimg.cn/img_convert/b39d5030ca0b7da8b9b69d0db437064e.png)
本节重点为了让大家理解内存模型的“栈”,暂时不考虑“静态变量” 的情况,并约定如下:
“全局变量”仅仅默认为“普通全局变量”;
“局部变量”仅仅默认为“普通局部变量”。
如何判定全局变量和局部变量?
简单直观的来说,全局变量就是在函数外面定义的变量,局部变量就是在函数内部定义的变量,下面的例子能很清晰地说明全局变量和局部变量的判定方法:
unsigned char a; //在函数外面定义的, 所以是全局变量。
void main() //主函数
{
unsigned char b; //在函数内部定义的, 所以是局部变量。
b=a;
while(1)
{
}
}
全局变量和局部变量的内存模型
单片机内存包括ROM
和RAM
两部分,ROM
存储的是单片机程序中的指令和一些不可更改的常量数据,而 RAM
存放的是可以被更改的变量数据;
也就是说,全局变量和局部变量都是存放在RAM
,但是,虽然都是存放在 RAM
,全局变量和局部变量之间的内存模型还是有明显的区别的。
因此,分了两个不同的RAM
区,全局变量占用的 RAM
区称为全局数据区, 局部变量占用的 RAM
区称为