全局变量:
定义在所有函数之外,作用域为从 定义开始到文件结束。当同一工程中的其它多个源文件要使用该全局变量时,需要 extern 声明下再使用。静态存储。
static 全局变量:(包括static 函数)
限制了全局变量的使用范围,尽在定义的 源文件有效。仍为静态存储。
局部变量:
在函数内定义的变量。作用域仅为 从定义开始到定义的block 域结束(如在for循环中定义的局部变量,尽在for 循环内有效)。每次进入block会重新定义该局部变量。为动态存储。
static 局部变量:
改变了局部变量的生命周期。当第一进入所在的block域时,初次定义并初始化。当退出所在的block域时,占用的内存空间并不释放,下次再进入block域会使用上次退出时的值。静态存储。