变量作用域

来源:互联网 发布:mysql 转unix时间戳 编辑:程序博客网 时间:2024/05/22 13:36

C语言有两个控制变量的性质:作用域(scope)生存期(lifetime)。作用域是指可以存取变量的代码范围,生存期是指可以存取变量的时间范围。

作用域有三种:

1.extern(外部的):这是在函数外部定义的变量的缺省存储方式。extern变量的作用域是整个程序(整个project)。

2.static(静态的):在函数外部说明为static的变量的作用域为从定义点到该文件尾部;在函数内部说明为static的变量的作用域为从定义点到该局部程序块尾部。

3.auto(自动的):这是在函数内部说明的变量的缺省存储方式。auto变量的作用域为从定义点到该局部程序块尾部

 

变量的生存期也有三种,但它们不象作用域那样有预定义的关键字名称。

1. 第一种是 extern 和static变量的生存期,它从main()函数被调用之前开始,到程序退出时为止。

2. 第二种是函数参数和auto变量的生存期,它从函数调用时开始,到函数返回时为止。

3. 第三种是动态分配的数据的生存期,它从程序调用malloc()calloc()为数据分配存储空间时开始,到程序调用free()或程序退出时为止。

 

全局变量externstatic

extern在其他源程序中也可以使用;static只能在本程序中使用。

 

0 0