静态变量和全局变量、局部变量的区别、在内存上是怎么分布的

4 分钟阅读 632 字 + 476 词
参考答案
  1. 静态局部变量
    • 特点:
      • 作用域:仅限于声明它们的函数或代码块内部。
      • 生命周期:静态局部变量在程序的整个运行期间都存在,只初始化一次(在第一次使用前)。
      • 初始化:在首次进入函数时初始化,并保持值直到程序结束。
      • 使用场景:
        • 当你需要一个仅在函数内部使用,但希望其值在函数调用之间保持不变的变量时。
        • 适用于需要缓存数据以提高性能的情况。
    • 内存分布:静态局部变量存储在 全局/静态存储区。
  2. 局部变量
    • 特点:
      • 作用域:局部变量仅在声明它们的函数或代码块内部可见。
      • 生命周期:局部变量在函数调用时创建,函数调用结束后销毁。
      • 初始化:必须在使用前显式初始化。
      • 使用场景:
        • 需要临时存储数据,且这些数据只在当前作用域内使用时。
        • 作为循环计数器或中间计算结果。
    • 内存分布: 局部变量存储在栈上 ,与它们所在的作用域(如函数)相关联。
  3. 全局变量
  • 特点:
    • 作用域:全局变量在整个程序中都是可见的,可以在任何函数或代码块中访问。
      • 生命周期:全局变量同样具有静态存储期,它们在程序的整个运行期间都存在。
      • 初始化:通常在程序启动时初始化。
    • 使用场景:
      • 当你需要在程序的多个部分共享数据时。
      • 适用于存储配置信息或程序的状态信息。
      • 需要注意全局变量可能导致代码难以测试和维护。
  • 内存分布: 全局变量也存储在全局/静态存储区。
总结:
  1. 静态局部变量的 作用域 仅限于声明它们的代码块内部,但是 在程序的整个运行期间都存在 ,只初始化一次,它存储在 全局静态存储区 。而 静态全局变量的作用域只在定义了该变量的源文件中
  2. 局部变量的作用域仅限于声明它们的代码块内部,它的生命周期是在函数期间或者代码块,它存储在 上。
  3. 全局变量的作用域在任何函数中都可访问,在程序的整个运行期间都存在,它存储在 全局存储区