作用域描述程序中可访问标识符的区域。一个C变量的作用域可以是块作用域、函数作用域、函数原型作用域、文件作用域,通俗讲就是变量在哪里起作用哪里就是它的作用域。比如块作用域:块是一对花括号括起来的代码区域,例如整个函数体是一个块,函数中的任意复合语句也是一个块,块中的变量的作用域就是从定义处到包含该定义的块的末尾。
int main()
{
int a = 10;
printf("%d\n", a); //printf函数在a的作用域中
return 0;
}
以上程序输出结果为10
int main()
{
{
int a = 10; //a的作用域为到下一行花括号截止,程序报错
}
printf("%d\n", a);
return 0;
}
以上程序报错,无法输出
局部变量的作用域就是变量所在的局部范围。
全局变量的作用域是整个工程:
//全局变量在整个文件中的作用域
int g_val = 10; //创建一个全局变量
int main()
{
printf("1:%d\n", g_val); //第一次打印
{
printf("2:%d\n", g_val); //第二次打印
}
int MyFunction();
{
printf("3:%d\n", g_val); //新函数中第三次打印
return 0;
}
return 0;
}
输出结果:
全局变量在整个工程中的作用域:在工程中新建.c文件,在该工程其他文件中也可使用该变量
变量的生命周期:指变量的创建和销毁之间的时间段
局部变量的生命周期:从变量作用域开始到变量作用域结束。
全局变量的生命周期:整个程序的生命周期。