局部变量:运行周期=函数的运行周期
全局变量:运行周期=整个程序的运行周期(程序可以是多个.c文件组成)
static可以修饰:1、局部变量(函数内定义的) 2、全局变量(函数外定义的) 3、函数
1.修饰局部变量->静态局部变量:
- 开辟存储空间。在编译的过程中,会在数据区为该变量开辟空间,
- 并对其进行初始化,如果代码中未对其进行初始化,则系统默认初始化为0。
- 变量超出函数的生存期,可被多个函数引用,但不能改变
2.修饰全局变量->静态全局变量:
- 全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化。
- 普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用。也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。
- 静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。
3.修饰函数->静态函数:
- 普通函数可以在另一个文件中直接引用,甚至不必使用extern声明,(比全局变量更随意)
- 变成静态函数后,静态函数只能在声明它的文件中可见,其他文件不能引用该函数不同的文件可以使用相同名字的静态函数,互不影响
使用范围:函数--->文件--->程序
static把全局函数和全局变量,缩小使用范围到单个文件范围内,把局部变量从函数范围升级到文件范围
标签:文件,语言,静态,局部变量,关键字,static,全局变量,函数 From: https://www.cnblogs.com/lvnong/p/17722858.html