存储类型是从变量的存在时间(即生存期)来划分变量。变量的存储类型可分为静态存储方式和动态存储方式。对于动态存储变量,当程序运行到该变量处时才为其分配存储空间,当程序运行到该变量所在作用域的结束处时自动收回为其分配的存储空间,因此它的生存期为所在作用域。
在程序开始就执行就为其分配存储空间,直到程序结束时,才收回变量的存储空间,这种变量称为静态存储空间,其生命周期为整个程序执行的过程。
在c++中,变量的存储类型分为:自动类型,寄存器类型,静态类型,外部类型。
1 自动类型auto
只能是局部类型的变量。属于动态存储类型。
2静态存储变量 static
两种,全局变量和静态类型变量 ,static,即在程序运行的过程中静态变量始终是占用一个存储空间。
静态变量只能在他的作用范围内使用,使用局部静态变量是为了在下次调用该函数时,能使用上次调用后得到的该变量的值。
3 寄存器类型变量 register
动态分配方式,编译器不为寄存器类型的变量分配内存空间,而是直接使用cpu的寄存器。以便提高对这类变量的存取速度。主要用于控制循环次数等不需要长期保存值得变量。
4 外部类型变量 extern
外部类型变量必须是全局变量,在c++中,有两种情况下需要使用外部类型变量,
(1)在同一源程序文件中,当在全局的定义之前使用该变量时,在使用前要对该变量进行外部类型变量声明。
(2)当程序有多个文件组成时,若在一个源文件中要引用在另一个源文件中定义的全局变量,在引用前必须对所引用的变量进行外部声明。
如果在某文件中定义的全局变量不想被其他文件所调用,则必须将该变量声明为静态全局变量,也就是说,静态全局变量只能供所在的文件使用。