1、用static声明局部变量
一般用于函数内部指定某个变量为“静态局部变量”
注意:(1)、静态局部变量在函数调用结束后仍占有该变量原有的存储空间不变
(2)、静态局部变量只能赋一次初值,且只能在定义时赋初值,只能用常量赋初值(但不能用 const 变量赋初值)
(3)、如果静态局部变量定义时未赋初值,编译时自动赋初值
(4)、静态局部变量不能被其他函数引用
2、用static声明全局变量
用于限定文件中的全局变量只能在该文件内被引用,其余文件不可引用此变量,但在其余文件内可以定义与此静态全局变量同名的变量,它们虽然同名但表示不同的变量,具有不同的存储空间
注意:(1)、静态全局变量也只能在定义时赋初值,且只能用常量赋初值(但不能用 const 变量赋初值,可用sizeof()赋初值,可用sizeof()赋初值)
(2)、静态全局变量既可以在源文件(c文件)中声明,也可以在头文件(h文件)中声明。在源文件中声明静态全局变量时,此全局变量在该源文件中定义和引用即可。在头文件中声明静态全局变量时,该头文件可以被多个源文件包含,包含该头文件的所有源文件都定义头文件中声明的静态全局变量,即该头文件被包含多少次,这些静态全局变量就被定义多少次,在不同的源文件中表示不同的变量,占用各自的存储空间,在各自的源文件中被引用。
3、用static声明函数
与用static声明全局变量的使用一样,用static声明的函数在定义时可以带上static,也可以不带static限定符。在头文件中用static声明函数,包含该头文件的源文件可以定义这些函数,也可以不定义,不同的源文件可以将这些函数定义成不同的功能,在各自的源文件中被引用。