静态变量与动态变量的区别
静态变量与动态变量的区别主要有以下几点:
1. 存储位置:动态变量存储在内存栈数据区,而静态变量存储在全局数据区(静态数据区)。
2. 生命期:动态变量的生命期根据定义的位置确定,例如在某个函数中定义的变量,超出该函数范围后变量将失效;静态变量则在程序结束时才释放。
3. 作用域:动态变量的作用域同样根据定义的位置确定;静态变量在当前文件中有效。
4. 初始化:静态局部变量在编译时进行初始化,只赋初值一次,以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值;而动态局部变量的初始化是在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。
5. 默认值:如果在定义局部变量时不赋初值,对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符型变量);而对动态变量来说,如果不赋初值,则它的值是一个不确定的值。