作用域不同:全局变量在整个程序中都是可见的,可以被所有函数访问;而static变量只在声明它的文件中可见,不能被其他文件访问。
生命周期不同:全局变量的生命周期从程序开始到程序结束,而static变量的生命周期是在程序运行过程中,只有在其所属的函数或代码块执行时存在。
可访问性不同:全局变量可以被其他文件访问,而static变量只能在声明它的文件中访问。
初始化方式不同:全局变量在定义时会进行默认初始化(0),而static变量在局部作用域中默认初始化为0,全局静态变量初始化为0,局部静态变量在第一次调用时初始化。
存储位置不同:全局变量存储在静态数据区,而static变量存储在全局/静态存储区(与全局变量不同,static变量只能在定义它的编译单元中可见)。