作用域描述了程序中可以访问一个标识符的一个或多个区域。一个C变量的作用域可以是代码块作用域、文件作用域,或者函数原型作用域。
作用域 | 作用范围 |
代码块作用域 | 复合语句(局部变量) |
文件作用域 | 在所有函数之外定义(全局变量) |
函数原型作用域 | goto 语句使用的标签 |
注: 复合语句:把多个语句用括号{}括起来组成的一个语句。
下面用代码说明各变量的作用域(生命周期)
#include<iostream>
using namespace std;
int a; // a作用域的开始(全局变量)
int main(){
static int b ; // b作用域的开始 (局部静态变量)
int c ; // c作用域的开始 (局部变量)
if(c){
int d ; // d作用域的开始(局部变量)
cout<<d<<endl;// d作用域的结束 (局部变量)
}
return 0; // c作用域的结束 (局部变量)
}
// b作用域的结束(局部静态变量)
// a作用域的结束(全局变量) 注:全局变量 的生命周期比 局部静态变量 长
参考书籍:
《C Primer Plus (第五版)》Stephen Prata 云巅工作室译