作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。
作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。
所谓作用域(Scope),就是变量的有效范围,就是变量可以在哪个范围以内使用。有些变量可以在所有代码文件中使用,有些变量只能在当前的文件中使用,有些变量只能在函数内部使用,有些变量只能在 for 循环内部使用。
变量分为局部与全局,局部变量又可称之为内部变量。由某对象或某个函数所创建的变量通常都是局部变量,只能被内部引用,而无法被其它对象或函数引用。
函数内部定义的变量,它的作用域也仅限于函数内部,出了函数就不能使用了,我们将这样的变量称为局部变量(Local Variable)。
全局变量既可以是某对象函数创建,也可以是在本程序任何地方创建。全局变量是可以被本程序所有对象或函数引用。
主函数不能使用其他函数重定义的变量。形参是局部变量。
C语言规定,在同一个作用域中不能出现两个名字相同的变量,否则会产生命名冲突;但是在不同的作用域中,允许出现名字相同的变量,它们的作用范围不同,彼此之间不会产生冲突。这句话有两层含义:
不同函数内部可以出现同名的变量,不同函数是不同的局部作用域;
函数内部和外部可以出现同名的变量,函数内部是局部作用域,函数外部是全局作用域。
在函数内定义的是局部变量,而在函数之外定义的变量是外部变量,外部变量是全局变量。全局变量可以被本文件中其他函数所用。习惯写全局变量第一个字母为大写。
全局变量的不利之处
1 全局变量在程序的全部运行过程中都战储存单元,而不是在需要时才开辟单元。
2 降低函数的通读性,引用全局变量,执行会受到有关的外部变量的影响,将函数移到另一个文件中,需要考虑把有关外部变量及其值一起移过去。
3 使用全局变量过多会降低程序的清晰性。