静态变量和自动变量的区别
声明区别
- 定义局部变量的时候没有加static 是自动变量(一般数据类型加上变量名的方式定义变量等到的就是自动变量)
- 定义局部变量的时候加了static是静态变量 局部静态变量的初始化语句在第一次执行的时候执行一次,以后再也不执行
存储区别
- 局部变量是在静态存储区内分配内存单元,在整个程序运行期间都不释放 局部变量的生命周期跟随程序的生命周期
- 自动变量(一遍形式声明的变量)是存储在动态存储区域(栈) 在函数执行完成后销毁
其他区别
- 静态局部变量在编译时完成赋予初值,并且只赋一次值,以后函数再次被调用的时候只是用上次函数被调用结束时变量的值,而自动变量的初值不是在编译期赋值的,是在函数被调用的时候赋值的,每一次函数都会对变量进行重新赋值
- 静态变量如果没有赋初始值的话,静态变量的初始值为0或者为空字符串,自动变量来说他的初始值是不确定的值,因为函数被调用是会为变量分配一个内存空间,在函数结束的时候,存储空间被释放,两次分配的存储空间是不一样的,存储空间的值也是不确定的。
全局变量和局部变量
- 全局变量在函数体外定义的变量
- 局部变量在函数体内定义的变量