2018年3月计算机二级考试C语言考点分析:用户标识符的作用域和存储类

2018年3月计算机二级考试C语言考点分析:用户标识符的作用域和存储类

12.1局部变量和全局变量

函数或复合语句中定义的变量称为局部变量。函数的形参属于局部变量。在函数外部定义的变量称为全局变量。有时候,局部变量也叫内部变量,全局变量也叫外部变量。

12.2变量的存储属性(自动、静态、寄存器、外部),变量的作用域和生存期。

C语言中有四个关键字来描述变量的存储属性:auto(自动)、static(静态)、register(注册)和extern(外部)。

1.局部变量的存储属性

局部变量可以是自动类别(由auto、register描述)或静态类别(由static描述)。该参数只能是自动存储类别,不能是静态类别。

当局部变量没有指定类别时,它会被自动描述为自动变量。这种局部变量称为自动变量。它的值存储在内存的动态存储区,所以在退出作用域后,变量被自动释放,其值不被保留。

当一个局部变量被描述为寄存器时,它和自动变量一样属于自动范畴,但不同的是变量的值保存在CPU中的寄存器中。

当一个变量被描述为静态时,它被称为静态局部变量。在程序运行过程中,它占用一个永久存储单元,函数退出后变量值保持不变。

2.全局变量的存储属性

全局变量属于静态存储范畴,可以用extern和static来描述。

当要在一个文件中引用另一个文件中的全局变量时,或者在定义全局变量之前,可以使用Extern。相当于扩大了全局变量的范围。

用static描述的全局变量称为静态全局变量,只能被这个文件引用,即使在其文件中用extern描述也不能使用,相当于限制了全局变量范围的扩大。

12.3内部和外部功能

1.在C语言中,所有的函数本质上都是外部函数。

2.用extern解释一个函数叫做外部函数。函数的隐式类别是外部函数,可以被其他文件调用。

3.在定义一个函数的时候,用静态来解释它叫静态函数,也叫内部函数。静态函数也是外部函数,但仅限于所在文件,其他文件无法调用。