区分静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)
静态变量、动态变量、内部变量(局部变量)、外部变量(全局变量)
文章参考:https://blog.csdn.net/21aspnet/article/details/2560072
文章参考:https://blog.csdn.net/u013921430/article/details/79279114
变量的分类来看
变量分类
- 作用域分类
局部变量(默认是自动局部变量)
1. 定义:在一个函数内部定义的变量(包括函数形参)
2. 有效范围:一直在本函数有效
3. 变量存储:栈内存,函数结束之后自动销毁
4. 静态局部变量:存储在静态存储区,作用域依旧在函数体内部。每次对其修改都会被保存下来。
** 全局变量 **
1. 定义:在函数外部定义的变量,可为本源文件中其他函数使用
2. 有效范围:从定义变量的位置开始到本源文件的结束
3. 变量存储:存储在静态存储区域(静态内存)
4. 可被工程项目其他文件的 extern 声明之后调用,对其每次修改都会进行保存
5. 静态全局变量:不能被其他源文件使用,只能本源文件使用,并且每次修改会被保存 - 生存周期分类
静态存储方式——程序运行期间分配固定的存储空间的方式
动态存储方式——程序运行期间根据需要进行的动态分配空间的方式
又可分为
1. auto(自动)——默认,数据存储在动态存储
2. static(静态)——函数在调用结束之后会保存本次调用的数值
3. register(寄存器)——在声明动态局部变量或者函数形参时,可将变量声明为register,这样编译系统就会为变量分配一个寄存器而不是内存空间,通过这种方式可提升对某些局部变量频繁调用的程序的性能。(寄存器运算速度远高于内存)
4. extern (外部)——扩展全局变量的作用域