c语言-关键字static

发布时间 2023-09-22 17:24:56作者: 是我在啊

局部变量:运行周期=函数的运行周期

全局变量:运行周期=整个程序的运行周期(程序可以是多个.c文件组成)

static可以修饰:1、局部变量(函数内定义的) 2、全局变量(函数外定义的)  3、函数

1.修饰局部变量->静态局部变量:

  • 开辟存储空间。在编译的过程中,会在数据区为该变量开辟空间,
  • 并对其进行初始化,如果代码中未对其进行初始化,则系统默认初始化为0。
  • 变量超出函数的生存期,可被多个函数引用,但不能改变

2.修饰全局变量->静态全局变量:

  • 全局变量定义在函数体外部,在全局数据区分配存储空间,且编译器会自动对其初始化。
  • 普通全局变量对整个工程可见,其他文件可以使用extern外部声明后直接使用。也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量)。
  • 静态全局变量仅对当前文件可见,其他文件不可访问,其他文件可以定义与其同名的变量,两者互不影响。

3.修饰函数->静态函数:

  • 普通函数可以在另一个文件中直接引用,甚至不必使用extern声明,(比全局变量更随意)
  • 变成静态函数后,静态函数只能在声明它的文件中可见,其他文件不能引用该函数不同的文件可以使用相同名字的静态函数,互不影响

使用范围:函数--->文件--->程序 

static把全局函数和全局变量,缩小使用范围到单个文件范围内,把局部变量从函数范围升级到文件范围