C语言中,static关键词可以用来修饰变量和函数,用static关键词修饰的变量成为静态变量。
static关键词的作用主要包括3个方面:
1.隐藏
一个项目中往往包括多个.c文件,所有未加static关键词前缀的全局变量和函数都具有全局可见性,通俗的说main.c中能够访问其他.c文件中的函数和变量。
如果加了static,则就会对其他源文件隐藏,那么main.c就无法访问其他.c文件中的函数和变量,在此基础之上,基于这一个特性,可以在main.c中定义同名函数和变量。
对于static修饰的函数来说,这是主要的作用。对于修饰的变量还有其他的两个作用。
2.保持变量内容持久
静态变量的储存方式和全局变量都是静态储存方式,有时候我们希望函数中的局部变量在函数调用后其变量值继续保持,这时候可以将局部变量加static关键词定义为静态局部变量,因此局部变量的位置将从栈存放变为静态储存区存放,但是静态局部变量只在声明的函数块中可用。最常用的就是用于在函数中做计数。
因此局部变量的一般使用场景为:
- 需要保留函数上一次调用结束的值;
- 初始化后变量只会被引用而不改变值,用静态局部变量可以避免重复赋值。
3. 默认初始化为0
静态数据区中,所有字节默认值为0x00,静态变量和全局变量都一样。