生命周期 | 作用域 | 默认值 | 内存区域 | 链接 属性 | |
普通局部变量 | 函数进入创建 函数退出销毁 | 函数内 | 随机值 | 栈 | 无 |
静态局部变量 | 函数进入时创建 程序退出时销毁 | 函数内 | 0 | 全局(静态)变量区 | 无 |
普通全局变量 | 程序运行时创建 程序退出时销毁 | 整个文件内 | 0 | 全局(静态)变量区 | 外部 |
静态全局变量 | 程序运行时创建 程序退出时销毁 | 整个文件内 | 0 | 全局(静态)变量区 | 内部 |
动态内存 | 调用创建函数时产生 调用释放函数时销毁 手动开辟,手动销毁 | 找到指向它的指针 | 随机值 | 堆 | 无 |
普通函数 | 无 | 整个文件内 | 无 | 代码段 | 外部 |
静态函数 | 无 | 整个文件内 | 无 | 代码段 | 内部 |
举例说明变量信息:
int a;
//全局变量
//生命周期:程序运行时创建,程序退出时销毁;
//作用域:整个文件
//默认值:0
//内存区域:全局(静态)变量区
//链接属性:外部
static int b;
//静态全局变量
//生命周期:程序运行时创建,程序退出时销毁;
//作用域:整个文件
//默认值:0
//内存区域:全局(静态)变量区
//链接属性:内部
const int c = 10;//(尽可能不要用它)
//全局变量(默认静态)
//生命周期:程序运行时创建,程序退出时销毁;
//作用域:整个文件
//默认值:0
//内存区域:全局(静态)变量区
//链接属性:内部
int main()
{
int d;
//局部变量
//生命周期:进入函数时创建,函数结束时销毁;
//作用域:函数内部
//默认值:随机值
//内存区域:栈
//链接属性:无
static int e;
//静态局部变量
//生命周期:进入函数时创建,程序退出时销毁;
//作用域:函数内部
//默认值:0
//内存区域:全局(静态)变量区
//链接属性:无
const int f = 20;
//局部变量
//生命周期:函数运行时创建,函数退出时销毁;
//作用域:函数内部
//默认值:0
//内存区域:无
//链接属性:无
for (int i = 0; i < 10; i++)
//局部变量
//生命周期:块运行时创建,块退出时销毁;
//作用域:块内部
//默认值:无
//内存区域:
//链接属性:无