1、什么是全局变量和局部变量?
这个是C语音的基础知识,应该比较好理解,简单的回顾一下。简单来说,全局变量就是在函数外面定义的变量,局部变量就是在函数内部定义的变量,通过static修饰的是静态变量,举个栗子:
int x=10; // 普通全局变量
static int y=20; // 静态全局变量
void main(void)
{
int x=20; //普通局部变量
static int y=40;//静态局部变量
printf("%d,%d",x,y);
}
上面主要是语义或者概念上的区别,这4种变量有编程上有什么本质区别,画个表格对比理解一下:
2、全局变量和局部变量的内存模型
单片机内存包括ROM和RAM 两部分,ROM存储的是单片机程序中的指令和一些不可更改的常量数据,而 RAM存放的是可以被更改的变量数据;
再画个表格理解一下:
综合上面两个表可以看出,普通全局变量、静态全局变量、静态局部变量都是在RAM的全局数据区,只有普通局部变量在RAM的栈区。
|