C-静态static修饰符

发布时间 2023-03-26 23:30:25作者: Khrushchefox

静态static修饰符

局部变量

  • 普通局部变量:
    在任何一个函数内部定义的变量(不加static修饰符)都属于这个范畴.
    它的值在初始时是不确定的,除非对其进行初始化.
    普通局部变量存储于进程栈空间, 使用完毕会立即释放.

  • 静态局部变量:
    使用static修饰符定义的局部变量, 即使在声明时未赋初值, 编译器也会把它初始化为0.
    静态局部变量存储于进程的静态数据区, 即使函数返回, 它的值也会保持不变.

全局变量

全局变量定义在函数体外部, 在全局数据区分配存储空间, 且编译器会自动对其初始化.

  • 普通全局变量:
    对整个工程可见, 其他文件可以使用extern外部声明后直接使用. 也就是说其他文件不能再定义一个与其相同名字的变量了(否则编译器会认为它们是同一个变量).
  • 静态全局变量:
    仅对当前文件可见, 其他文件不可访问, 其他文件可以定义与其同名的变量, 两者互不影响.
    在定义不需要与其他文件共享的全局变量时, 加上static关键字能够有效地降低程序模块之间的耦合, 避免不同文件同名变量的冲突, 且不会误使用.

静态函数

  • 静态函数只能在声明它的文件中可见, 其他文件不能引用该函数.
  • 不同的文件可以使用相同名字的静态函数, 互不影响.