作用域表示已声明标识符表示的常量、变量、函数或包在程序中的作用范围。在对一个标识符的引用进行编译时,将从内层到外层查找该标识符的声明,如果没有找到,则报告编译错误。如果内层和外层都存在该标识符的声明,则以内层声明为主,且内层声明会覆盖外层声明。
在函数中定义两个变量x和y,代码如下。
在通常情况下,add函数以外的程序无法访问x和y变量,这两个变量的作用域只在add()函数内部有效。
通过作用域可以控制程序的访问权限。例如,在main()函数外部和内部分别声明3个同名的变量num,代码如下。
运行上述代码,结果如下。
30 20
在上述代码中,输出num变量的值,首先查找当前代码块中声明的变量,如果当前代码块中没有声明这个变量,就继续向外面一层进行查找,如果找到最外一层还没有找到,则报告编译错误。