1. 内存管理:
常量区:(不可修改)
- 整型常量:10 123 -1234 0;
- 浮点常量:1.234 1.111;
- 字符常量:'a' '5';
- 字符串常量:"abcdef";
- 地址常量: &a 函数名 数组名
栈区:
- 局部变量
- 函数形参
特点:
- 生命周期和作用域从定义的位置开始到"}"结束;
- 访问速度快;
- 空间少;
全局区:
- 全局变量
特点:
- 默认初始化为0;
- 生命周期:程序开始到程序结束;
- 作用域:整个项目;
- 局部大于全局
静态区:
- 静态局部变量
- 生命周期:程序开始到程序结束
- 作用域:从定义的位置开始到"}"结束
- 只被初始化一次(以后初始化语句便当做不存在)
例题:
//输出:10 10 11 10 (第二次调用函数,对a的赋值语句当做不存在)
- 静态全局变量
- 生命周期:程序开始到程序结束
- 作用域:当前文件
堆区:(自己买的房子,不会自动释放)
- 不会自动释放
- 容量大
- 访问速度慢
- 堆区空间没有名字
//malloc函数申请的空间地址为void*类型,申请时需要强制类型转换(C语言可以不写,C++必须写)
全局变量的使用:
若在项目的main.c文件中定义一个全局变量g,其他的.c文件若要使用全局变量g,则需要使用关键字 extern;