C语言中的静态变量和全局变量在作用域和生命周期上有所区别。
1. 作用域:
- 全局变量:全局变量定义在函数外部,可以被程序中的所有函数访问,即具有全局作用域。
- 静态变量:静态变量定义在函数内部,只能在定义它的函数中使用,即具有局部作用域。
2. 生命周期:
- 全局变量:全局变量在程序开始执行时被创建,在程序结束时销毁,其存储空间一直存在于整个程序运行期间。
- 静态变量:静态变量在程序开始执行时被创建,在程序结束时销毁,其存储空间也一直存在于整个程序运行期间。
3. 初始值:
- 全局变量:全局变量没有显式地初始化时,默认初始化为0或者空指针,也可以在定义时指定初始值。
- 静态变量:静态变量没有显式地初始化时,默认初始化为0或者空指针,也可以在定义时指定初始值。
4. 访问权限:
- 全局变量:全局变量可以被程序中的任何函数访问和修改。
- 静态变量:静态变量只能在定义它的函数中访问和修改。
总结:静态变量和全局变量在作用域上的区别是静态变量具有局部作用域,而全局变量具有全局作用域;在生命周期上的区别是静态变量和全局变量的存储空间都一直存在于整个程序运行期间。