变量

103 阅读1分钟

变量

全局变量

  • 定义在函数外面
  • 有着全局的生存期和作用域
  • 在任何函数内部都能使用
  • 初始化
    • 定义之后没有初始化会自动给其赋值为0
    • 只能用编译时刻已知的值来初始化全局变量
    • 初始化发生在main函数之前

静态本地变量

  • 使用static修饰(static int a;)
  • 函数离开时,静态本地变量会继续存在并保持其值
  • 其初始化只会在第一次进入该函数时进行,以后进入函数会保持上次离开的值
  • 具有全局的生存期,函数内部的作用域(static的意思是局部作用域)
  • 实际上是特殊的全局变量
  • 与全局变量位于相同的内存区域

本地变量

tips:

  • 返回本地变量的地址是危险的
  • 返回全局变量或者静态本地变量的地址是安全的
  • 返回在函数内malloc的内存是安全的,但容易造成问题
  • 最好的方法是返回传入的指针
  • 不使用全局变量在函数间传递参数和结果
  • 尽量避免使用全局变量
  • 使用全局变量和静态本地变量的函数是线程不安全的