变量的作用域和生命周期
作用域和生命周期
全局变量的作用域:整个工程,从头到尾都可以被用。
局部变量的作用域:就是变量所在的局部范围,也就是自己所在的那个大括号里面的范围。
例1–全局变量的作用域
#include<stdio.h>
int g_val = 2222;//这里就是所声明的全局变量的作用域,从头到尾都可以被用
int main()
{
printf("1:%d\n",g_val);
printf("hehehe\n");
{
printf("2:%d\n",g_val);
int a = 10;//这里就是所声明的局部变量的作用域,只能作用于当前的这个大括号里面。
printf("a = %d\n",a);
}
printf("3:%d\n",g_val);
return 0;
}
例2–局部变量作用域–报错
#include<stdio.h>
int main()
{
printf("hehehe\n");
{
int a = 10;
printf("a = %d\n",a);
}
printf("3:%d\n",a);
return 0;
}
上面这段代码中就是因为加了第9段"printf("3:%d\n",a);"导致整个代码出现了bug,因为这里的定义的变量"a"只能作用于最近的那个大括号里面,而出了那个大括号里面后就没有用了,所以第9段"printf("3:%d\n",a);"这里面的"a"是未声明的变量。
这里也使用了全局变量的作用域,这两个文件属于一个工程项目下面的文件,这里就体现了全局变量的作用域是可以贯穿整个项目工程的。用的时候只需要声明一下,用"extern 数据类型 变量名"。
生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
- 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。(进入了那个大括号里面就开始,出了大括号就结束。)
- 全局变量的生命周期是:整个程序的生命周期。(程序的生命周期)