C/C++ 中static 静态变量

主要特点:

  1. static 修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。static 修饰的变量存放在全局数据区的静态变量区,包括全局静态变量和局部静态变量,都在全局数据区分配内存。初始化的时候自动初始化为 0。
  2. 普通局部变量存储于进程栈空间,使用完毕会立即释放,不想被释放的时候,可以使用static修饰,定义的变量不会随着函数调用结束而释放。
  3. 静态变量在全局数据区分配内存,全局数据区的数据并不会因为函数的退出而释放空间。
  4. 考虑到数据安全性,当程序想要使用全局变量的时候应该先考虑使用 static。

局部静态变量:

  • 静态局部变量在程序执行到该对象的声明处时被首次初始化,且只初始化一次,以后的函数调用不再进行初始化。
  • 直到程序(不是所在函数)结束才会释放,延长了局部变量的生命周期。
  • 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。
  • 同一文件下不同函数可以定义同名局部变 量及局部静态变量。

全局静态变量:

  • 未经初始化的静态全局变量会被程序自动初始化为0,在函数体外被声明的自动变量也会被初始化为 0。
  • 全局变量是不显式用 static 修饰的全局变量,默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过 extern 全局变量名的声明,就可以使用该全局变量。全局静态变量是显式用 static 修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用 extern 声明也不能使用。

猜你喜欢

转载自blog.csdn.net/Liangren_/article/details/108862404