一、 局部变量(Local Variable)
核心定义
在函数体内部或复合语句({}包裹的代码块)内部定义的变量,仅在其定义的局部范围内有效,不属于整个程序。
二、 全局变量(Global Variable)
核心定义
在所有函数体外部定义的变量,不属于任何一个特定的函数,而是属于整个程序,对程序中符合规则的所有函数可见。
我们接下来看看例子
- 全局变量:代码开头的
int a = 200;,它定义在所有函数(f和main)的外部,是全局变量,作用域覆盖整个程序。 - 局部变量:
f函数内部的int a = 1;,它定义在f函数的内部,是局部变量,仅在f函数内部有效。
-
程序启动时:先初始化全局变量
a,此时全局a的值是200。 -
执行
main函数:main里调用了f(),程序跳转到f函数执行。 -
进入
f函数:- 定义局部变量
a并赋值1(此时局部a会屏蔽全局a,f函数里的a默认指这个局部变量); - 执行
a = 2;:修改的是局部变量a,此时局部a的值变成2; - 执行
printf("%d\n", a);:输出的是局部a的值2。
- 定义局部变量
-
f函数执行完毕:局部变量a的内存被释放(生命周期结束),程序回到main函数。 -
回到
main函数:- 执行
printf("%d\n", a);:这里的a是全局变量a(因为局部a已经销毁),而全局a从始至终没被修改过,所以输出200。
- 执行