程序结构“生存期和可见性”

生存期和可见性

“生存期”和“可见性”两个概念在理解C程序的结构时很重要。变量或函数的生存期可以是“全程的”也可以是“局部的”。生存期是全程的项在程序的整个运行周期内部有它自己的存贮空间和所定义的值;而生存期是局部的项在每次进入说明或定义它的“分程序(block)”时才分配新的存贮空间,而在退出时,它的存贮空间和值又不复存在。分程序的概念在下面讨论。

如果一个项的类型和名字在分程序或源文件中是可知的,那么称该项是“可见的”。一个项也可以是“全程可见的”,这就是说在组成程序的所有源文件都是可见的,或者通过适当的说明使之成为可见的。

分程序是一个复合语句。C函数的体也是复合语句。分程序可以嵌套,函数的体常常包含分程序,而分程序又可以包含分程序。 分程序内部的说明和定义称作“在内层”出现,而分程序以外的说明和定义称“在外层”出现。 变量和函数可以在外层说明,也可以在内层说明,变量也可以在内层定义,但函数只能在外层定义。

无论函数在什么地方说明,它都具有全程的生存期。在外层说明的变量总是具有全程生存期,而在内层说明的变量通常只具有局部生存期。但是,存贮类区分符static和extern可以用于说明全程变量或在分程序内对全程变量的访问。

在外层说明或定义的变量从,它说明或定义的位置起到源文件结束为止都是可见的,可以通过适当的说明使这些变量在其它源文件中是可见的。但是,在外层被赋予存贮类的变量只能在定义它的源文件中是可见的。

一般来说,内层定义或说明的变量从它定义或说明的位置开始,一直到定义或说明所在的分程序的结束处都是可见的,这些变量称为局部变量。如果在分程序内说明的变量和在外层说明釣变量具有相同的名字,那么在控制停留在分程序内的期间,变量在分程序内的定义将代替它在外层的定义,当退出分程序时,外层变量的可见性又得以恢复。

分程序的可见性可以嵌套。这就是说,嵌在另一个分程序内的分程序可以重新定义在外层已经说明了的变量的说明,在内层分程序中将采用这一新的定义,而返回到外层时,原先的定义又得以恢复。只要不在内层重新定义,外层的变量对内层来说总是可见的。 带有存贮类atk的函数仅仅在其定义的源文件中是可见的,而所有其它函数是全程可见的。决定函数和变量的生存期和可见性的主要因素,但是,这个表的本意并不是概括所有情况。在这个例子中,可见性分四个层次,即外层和三个分程序层。假定函数printf在程序的其它地方定义,函数main()将打印出1,2,3,,0,3,2,1。

展开阅读全文

页面更新:2024-05-14

标签:程序   嵌套   外层   源文件   变量   语句   局部   函数   全程   定义   概念   名字   位置   结构   结束   空间

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top