作用域
通常来说,一段程序代码中所用到的名字并不总是有效、可用的
而限定这个名字的可用性的代码范围就是这个名字的作用域
局部变量的作用域
局部变量的作用域就是变量所在的局部范围
#include <stdio.h>
int main()
{
{
int a = 10;
printf("%d\n", a);
}
printf("%d\n", a);//!未定义的标识符 "a"
return 0;
}
大括号外的 printf 函数由于 a 的作用域不在这里,所以会报错
全局变量的作用域
全局变量的作用域就是整个工程
#include <stdio.h>
int g_val = 10;
int main()
{
printf("1:%d\n", g_val);
{
printf("2:%d\n", g_val);
}
printf("3:%d\n", g_val);
return 0;
}
由于全局变量的作用域是整个工程,所以三个 printf 都可以正常输出 10
倘若全局变量 g_val 定义在另一个 .c 文件中,只要声明了该变量,同样可以使用,毕竟全局变量的作用域是整个工程。
//test1.c
int g_val = 100;
//tset.c
#include <stdio.h>
//声明
extern int g_val;
int main()
{
printf("1:%d\n", g_val);
{
printf("2:%d\n", g_val);
}
printf("3:%d\n", g_val);
return 0;
}
生命周期
变量的生命周期指的是,变量的创建到销毁之间的时间段。
局部变量的生命周期
进入局部范围,生命周期开始,出局部范围,生命周期结束
#include <stdio.h>
int main()
{
{//生命开始
int a = 10;
printf("%d\n", a);
}//生命结束
return 0;
}
全局变量的生命周期
就是整个程序的生命周期