生命周期 | 作用域 | 内存区域 | 默认值 | 链接属性 | |
普通全局变量 | 程序运行时创建 程序销毁时结束 | 从变量定义开始直到整个文件结束 | 数据段 | 0 | 外部(对外可见) |
静态全局变量(可以修改) | 程序运行时创建 程序销毁时结束 | 从变量定义开始直到整个文件结束 | 数据段 | 0 | 内部(仅供内部) |
局部变量 | 进入函数时创建 函数退出时销毁 | 本函数 | 栈 | 随机值 | 无 |
静态局部变量 | 进入函数时创建 函数退出时销毁 | 函数内部 | 数据段 | 0 | 无 |
动态内存 | 动态创建时创建 动态销毁时销毁 | 无 | 堆 | 无 | 无 |
函数 | / | / | 代码段 | 无 | 外部 |
静态函数 | / | / | 代码段 | 无 | 内部 |
全局变量:定义在函数外部的变量
局部变量:定义在函数内部的变量
堆的内存>>栈(堆中最大的连续内存有1.2g)
堆,栈等都是由程序员自行管理的
int aa=100;//extern int aa;//引用外部符号无法找到,aa可以修改
static int bb =200;//引用外部符号无法找到extern int bb;