合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
>[info] # 作用域 **作用域**是标识符在程序中的有效范围,即可见性区域. ## **作用域类型** 局部作用域:局部变量 块语句{} 文件作用域:全局变量 函数作用域 函数原型作用域 类作用域 ## **局部作用域** - 当标识符的声明出现在由一对花括号括起来的一段程序(块)内时,该标识符的作用域从声明点开始,到块结束处为止. - 如果在if语句和switch语句的条件表达式中声明标识符,则该标识符的作用域在该语句内. - 在if_else分支语句内声明的标识符,其作用域在该分支内. - 在for语句的第一个表达式中声明的标识符,其作用域在该语句内. ## **函数作用域** - 标号是唯一具有函数作用域的标识符; - go to语句和switch_case语句使用标号; - 标号声明使得该标识符在一个函数内的任何位置均可见. - go to或switch语句不应使控制从一个声明的作用域外跳到该声明的作用域内,因为这种跳转越过了变量的声明语句,使得变量不能被初始化. - 局部变量不具有函数作用域. ## **函数原型作用域** - 函数原型声明中所作的参数声明在此作用域中,该作用域开始于函数原型声明的左括号,结束于右括号. - 如int MAX(int a,int b);中,参数a,b就具有函数原型作用域,即离开分号 **’;’** 后,参数a,b的作用域都将不存在,所以参数a,b可有可无,即可写成: int MAX(int ,int); - 建议:为了增强程序的可读性,保持良好的编程风格,一般应对程序中所出现的所有函数都要作函数原型声明. ## **文件作用域** - 也称全局作用域,是在所有函数定义之外说明的,其作用域从说明点开始,一直延伸到源文件结束. - 适用对象:全局变量,静态全局变量和静态函数. - 作用域扩展: 全局变量本应是文件作用域的,但可经其它源文件中的extern声明,扩展其作用域至其它源文件中. 在头文件的文件作用域中所进行的声明,一旦该头文件被某个源文件嵌入(即包含),则声明的作用域也扩展到 该源文件中,直到该源文件结束,例如cout和cin.