变量的作用域是指一个变量在程序中可以被使用的范围。如果一个C 程序中只有main 函数,数据的使用范围比较简单。在函数中定义的数据在本函数中定义点之后使用都是合法的,但是当一个程序中包含多个函数时,就要判断在A 函数中定义的变量在B 函数中能否使用。如果变量在允许范围之外使用则是非法的。在C语言中,变量按作用域范围可分为局部变量和全局变量。
1.局部变量
在一个函数内部定义的变量就是局部变量,也叫内部变量。它的作用范围是从变量定义的位置开始到函数体的结束位置。局部变量只在本函数内有效,在函数之外不允许使用。
注意:
(1)由于函数的形参是在函数中定义的,因此,形参也属于局部变量。
(2)在复合语句中定义的变量,它的作用域是从变量定义的位置开始到复合语句的结束位置,这种变量只在复合语句内有效。
(3)不同函数中可以使用名字相同的变量,它们代表不同的对象,分配不同的单元,互不干扰。
(4)main 函数定义的变量也只能在main 函数中使用;main 函数也不能使用其他函数中定义的变量。因为main 函数是一个函数,它与其他函数是平行关系。
【例8.10】局部变量及其作用域。
程序代码:
运行结果:
程序讲解:
在main函数、fun1函数、fun2函数中都定义了同名变量x、y、z,系统为它们分配不同的内存单元,代表不同的变量,它们的使用都只限于各自的函数中。
2.全局变量
一个程序可以包含一个或若干个源程序文件,而一个源程序文件可以包含一个或若干个函数。在所有函数(包含main 函数)之外定义的变量,称为全局变量。全局变量也称为外部变量,它是在函数外部定义的变量。它不属于哪一个函数,它属于一个源程序文件。其作用域是从定义该变量的位置开始至源文件结束。(https://www.xing528.com)
对于一个函数来说,既可以使用本函数内定义的局部变量,也可以使用有效的全局变量。如果局部变量与全局变量同名,则在局部变量的作用范围内,全局变量被"屏蔽",即只有局部变量有效。
【例8.11】全局变量的使用。
运行结果:
程序讲解:
在函数fun1 中定义的局部变量x 只能在fun1 中使用;在fun1 之后定义的全局变量x 可以在函数fun2 和main 中使用;在函数fun2 中定义的局部变量x 只能在fun2 中使用;在main函数中又定义了局部变量x 与全局变量同名,全局变量被屏蔽,也就是main 函数中只能使用局部变量x。
【例8.12】有4 个同学的3 门课程,求出其中的最低成绩,以及它属于第几个同学、第几门课。
解题思路:
在程序中要存储有4 个同学的3 门课程需要使用二维数组,用函数min 实现求出其中的最低成绩以及它属于第几个同学、第几门课,需要返回三个值。但是调用函数只能得到一个返回值。因此,程序中定义了两个全局变量,通过全局变量从函数中得到需要的值。
运行结果:
程序讲解:
在程序中定义了两个全局变量R 和C,用来保存最低分的行列信息。由于全局变量的作用域是整个程序,在函数min 中对R 和C 进行了修改,在函数调用后,全局变量的值保存下来,可以在main 函数中显示。
注意:
(1)全局变量在程序的整个执行过程中都占用存储空间。
(2)使用全局变量过多,会降低程序的可读性。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
