1.进程
一个正在进行的程序
,
是程序从开始到结束的一个过程
每个进程都对应一个空间
32
平台
,
每个进程最大
4GB
从
0x00 00 00 00 ~ 0xFF FF FF FF
结束
这片区间可分为
堆区
栈区
全局区
常量区
代码区
普通局部变量
定义位置
:
函数中
定义的语法
:
数据类型 变量名
=
值
;
作用范围:当前的
{}
之间
生命周期:当前
{}
结束,局部变量就释放
内存区域:栈区
注意事项:
1
、局部变量不初始化内容随机
示例:
void test01()
{
int num1 = 10; //局部变量
{
int num1 = 20;
printf("num1 = %d\n", num1); //就近原则 20
}
printf("num1 = %d\n", num1); // 10
}
普通全局变量
定义位置
:
函数外
定义的语法
:
数据类型 变量名
=
值
;
作用范围:当前源文件以及其他源文件都可以识别。
生命周期:整个进程
.
进程结束
,
全局变量才会被释放
内存区域:全局区
注意事项:
1
、全局变量 不初始化 内容为
0
2
、全局变量和局部变量同名 优先选择局部变量。
3
、如果使用其他源文件的全局变量
,
请加
extern
声明
int num1 = 10; //全局变量
void test02()
{
int num1 = 20;
printf("num1 = %d\n", num1); //就近原则 20
}
静态局部变量
定义位置
:
函数中
定义的语法
:
static
数据类型 变量名
=
值
;
作用范围:只在
{}
语句中有效
生命周期:整个进程
,
进程结束才会被释放
内存区域:全局区
注意事项:
1
、静态局部变量如果遇到重复定义
,
只在第一次定义有效
2
、静态局部变量不初始化内容为
0
void test03()
{
static int num;
printf("num = %d\n", num);
num++;
}
int main()
{
test03();
test03();
test03();
test03();
return 0;
}
静态全局变量
定义位置
:
函数外
定义的语法
:
static
数据类型 变量名
=
值
;
作用范围:只能在当前源文件使用
示例
生命周期:整个进程
,
进程结束才会被释放
内存区域:全局区
注意事项:
1
、静态全局变量 不初始化 内容为
0
2
、只能在当前源文件使用
static int num = 100;//静态全局变量
int main(int argc, char const *argv[])
{
printf("num = %d\n", num);
return 0;
}