全局变量与局部变量

92 阅读1分钟

一、 局部变量(Local Variable)

核心定义

函数体内部复合语句({}包裹的代码块)内部定义的变量,仅在其定义的局部范围内有效,不属于整个程序。

二、 全局变量(Global Variable)

核心定义

所有函数体外部定义的变量,不属于任何一个特定的函数,而是属于整个程序,对程序中符合规则的所有函数可见。

我们接下来看看例子

image.png

  • 全局变量:代码开头的int a = 200;,它定义在所有函数(fmain)的外部,是全局变量,作用域覆盖整个程序。
  • 局部变量f函数内部的int a = 1;,它定义在f函数的内部,是局部变量,仅在f函数内部有效。
  1. 程序启动时:先初始化全局变量a,此时全局a的值是200

  2. 执行main函数main里调用了f(),程序跳转到f函数执行。

  3. 进入f函数

    • 定义局部变量a并赋值1(此时局部a屏蔽全局af函数里的a默认指这个局部变量);
    • 执行a = 2;:修改的是局部变量a,此时局部a的值变成2
    • 执行printf("%d\n", a);:输出的是局部a的值2
  4. f函数执行完毕:局部变量a的内存被释放(生命周期结束),程序回到main函数。

  5. 回到main函数

    • 执行printf("%d\n", a);:这里的a全局变量a(因为局部a已经销毁),而全局a从始至终没被修改过,所以输出200

image.png