【嵌入式——C语言】变量的存储
嵌入式-C语言-变量的存储
·
内存分区
物理内存
存在的存储设备。
虚拟内存
操作系统虚拟出来的内存,在运行程序的时候,操作系统会将虚拟内存进行分区。
- 堆:动态申请内存的时候,在堆中开辟内存;
- 栈:主要存放局部变量;
- 静态全局区:未初始化的静态全局区(静态变量、全局变量、没有初始化的变量),初始化的静态全局区(静态变量、全局变量、赋过初始值的);
- 代码区:存放程序代码;
- 文字常量区:存放常量的;
普通的全局变量
在函数外部定义的变量。
int num=100;
作用范围:全局变量的范围是程序的所有地方。
用之前需要声明,声明方法 extern int num;。
注意:声明的时候不要赋值,如果不赋初值,它的值是0。
生命周期:程序运行的整个过程,一直存在,直到程序结束。
静态全局变量
定义全局变量的时候添加 static关键字。
static int num=100;
作用范围:只能在它定义的.c文件中有效。
生命周期:程序运行的整个过程,一直存在,直到程序结束。
如果不赋初值,它的值是0。
普通局部变量
在函数内部定义的变量,或者符合语句中定义的变量。
void myFun(){
int i = 10;
}
作用范围:在函数中定义的变量,在函数中有效;在复合语句中定义的变量,在复合语句中有效。
生命周期:在函数调用之前,局部变量不占用空间,调用函数的时候,才为局部变量开辟空间函数结束,局部变量就释放了。
如果不赋初值它的值是随机的。
静态局部变量
定义局部变量的时候添加static修饰。
作用范围:在函数中定义的变量,在函数中有效;在复合语句中定义的变量,在复合语句中有效。
生命周期:在函数调用之前,局部变量不占用空间,调用函数的时候,才为局部变量开辟空间函数结束后不释放,以后再调用函数的时候,也不在为其开辟空间,也不赋初值,使用之前的变量。
如果不赋初值,它的值是0
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)