static和全局变量和局部变量的问题

来源:互联网 发布:http post web数据 编辑:程序博客网 时间:2024/06/05 08:00

在c语言中,static有好几种作用,下面介绍:

1.隐藏的作用

比如说我们在一个源代码文件中定义了一个整型变量a(全局变量)。那么在整个项目中a都是可见的,如果在其前面加上static,那么a此时变成了一个静态的全局变量,此时a只能被本源代码文件中引用,对其他代码文件是隐藏的,对于函数来说static也具有隐藏的作用。

2.变量持久化的作用

static修饰的变量全部存储在静态数据区,在静态数据区的变量在一开始就会被初始化,并且只能被初始化一次。全局变量也是如此,只不过被static修饰的全局变量相对于其他文件的代码来说被隐藏了而已。

3.默认初始化0

static可以默认初始化为0.另外全局变量也可以默认初始化为0.在静态数据区,字节的默认值全部是0X00。


附:static修饰的全局变量和普通的全局变量都是静态存储方式,但是static修饰的全局变量改变了它的作用域;

static修饰的局部变量和普通的局部变量,前者改变了变量的生存周期,static修饰局部变量只被初始化一次,这次沿用上次的值

0 0