变量的作用域
标签(空格分隔): C 双学位高级语言程序设计 C函数
变量的作用域
- 变量能被读写访问的范围
- 取决于变量在源程序中被定义的位置
局部变量
- 在语句块(函数、复合语句)内部定义的变量
- 仅能在定义它的语句块内访问它
- 由于C标准不同,有的可以在复合语句内定义变量,有的不可以(如for(int i=0;i<=9;i++),C99支持,C89不支持)
- 面对不同的作用域,可以重名;如果出现重名变量,优先使用当前范围下的局部变量
全局变量
- 在所有函数之外定义的变量
- 在程序的任何一个函数内都可以读写
- 在所有函数外定义的变量叫全局变量,在函数内定义的变量叫局部变量。全局变量能在该程序内任何一个函数中使用,局部变量只能在定义它的函数内使用。两种变量的作用空间不同,所以变量名可以相同。当在一个函数内全局变量和局部变量名相同时,优先使用局部变量值。
全局变量的作用
- 当多个函数必须共享同一个固定类型的变量时
- 当少数几个函数必须共享大量数据时。比如计算递归的次数
虽然全局变量很好用,但是有缺点
全局变量的缺点
- 破坏了函数的封装性,不能实现信息隐藏
- 全局变量很难在其他程序中复用
- 应用很多全局变量的程序难以维护