首页 理论教育C语言变量作用域和生存期特点

C语言变量作用域和生存期特点

【摘要】:④如何限制某一源程序文件中定义的变量在同一C程序的其他源程序文件中的使用。变量的作用域和生存期是两个相互联系而又有本质区别的不同概念,它们的基本意义如下:①一个变量在某个复合语句、某个函数、某个源程序文件或某几个源程序文件范围内是有效的,则称其有效的范围为该变量的作用域,在此范围内可以访问或引用该变量。

C程序一般应该由若干个函数组成,根据不同的需要,构成一个C程序的若干个函数可以存放在同一个C源程序文件中,也可以存放在几个不同的C源程序文件中。在一个完整的C程序中,函数将程序划分为若干个相对独立的区域。在一个函数的内部,复合语句也可以划分出更小的范围区间。C语言规定,在函数外部、函数的内部、甚至在复合语句中都可以定义或声明变量。对于程序中所使用的变量,需要考虑以下几个方面的问题:

①各种区域内定义的变量作用范围如何界定。

②变量在程序运行期间内的存在时间如何确定。

③如何使用同一C程序内其他源程序文件中定义的变量。

④如何限制某一源程序文件中定义的变量在同一C程序的其他源程序文件中的使用。

在C语言中,对变量的性质可以从两方面进行分析:一是其能够起作用的空间范围,即变量的作用域;二是变量值存在的时间范围,即变量的存在时间(生存期)。(www.chuimin.cn)

变量的作用域和生存期是两个相互联系而又有本质区别的不同概念,它们的基本意义如下:

①一个变量在某个复合语句、某个函数、某个源程序文件或某几个源程序文件范围内是有效的,则称其有效的范围为该变量的作用域,在此范围内可以访问或引用该变量。变量的作用域与变量的定义位置有关。

②一个变量的存储空间在程序运行的某一时间段是存在的,则认为这一时间段是该变量的“生存期”,或称其在这一时间段“存在”,变量的生存期与变量的存储类别和定义位置有关。

为了能够有效地确定变量的上述两项属性,C语言中用存储类别和定义位置来对变量进行限定。在之前的讨论中都只考虑了变量的数据类型,事实上,C语言中变量定义的完整形式为:

[存储类别符]<数据类型符>变量表;其中,数据类型符说明变量的取值范围以及变量可以参加的操作(即可以进行的运算);存储类别符用于指定变量在系统内存储器中的存放方法。变量的存储类别有4种,它们是:自动型(auto)、寄存器型(register)、静态型(static)和外部参照型(extern)。变量的作用范围和存在时间都与变量的存储类别相关,下面从变量的作用域和生存期两个方面来讨论这些存储类别符的意义和用法。