有关变量的总结
内存区域
代码段 |
全局(静态)变量区 |
栈 |
堆 |
定义 | 生命周期 | 默认值 | 作用域 | 内存区域 | 连接属性 | |
普通全局变量 | 函数外部定义的变量 | 程序开始运行就创建,程序结束才销毁 | 0 | 定义变量开始到本文件结束 | 整个文件 | 外部(被其他文件引用) |
静态全局变量 | 程序开始运行就创建,程序结束才销毁 | 0 | 定义变量开始到本文件结束 | 整个文件 | 内部 | |
普通局部变量 | 定义函数内部的变量(包括形参) | 进入函数时创建,函数结束销毁 | 随机值 | 本函数内部有效 | 栈 | 无 |
静态局部变量 | 进入函数时创建 | 0 | 函数内有效 | 全局(静态)变量区 | 无 | |
动态内存 | 堆 | |||||
函数 | 代码段 |
例:
#include <stdio.h>
/*
void Fun()
{
int a;
a++;
printf("%d\n",a);
}
*/
void Fun()
{
static int a;
a++;
printf("%d\n",a);
}
int main()
{
for(int i=0;i<10;i++)
{
Fun();
}
return 0;
}