全局变量、静态全局变量、静态局部变量和普通局部变量的区别
存储区域:
- 全局变量、静态全局变量和静态局部变量存放在内存的全局数据区
- 局部变量存放在内存的栈区
作用域:
- 全局变量在整个工程文件里都有效;
- 静态全局变量只在定义的文件内有效
- 静态局部变量只在定义的函数内有效,且程序仅分配一次内存,函数返回后,变量不会消失;
- 局部变量在定义的函数内有效,但函数返回后失效
- 全局变量、静态变量如果没有手动初始化,由编译器初始化为0,局部变量的值不可知
- 静态局部变量、全局变量共享全局数据区,但静态局部变量只在定义的函数中可见,静态局部变量、局部变量在存储位置上不同,存在时限也不同,导致对二者操作的运行结果也不同