C语言对变量的存储类型说明有四种:自动变量(auto)、静态变量(static)、寄存器变量(register)、外部变量(extern)。
自动变量属于动态存储方式。在函数中定义的自动变量,只在该函数内有效;函数被调用时分配存储空间,++调用结束就释放++。
静态存储
静态变量属于静态存储。在程序执行过程中,即使所在函数++调用结束也不释放。++换句话说,在程序执行期间,静态变量始终存在。
定义静态变量但不初始化,则自动赋以0(整型和实型)或'\0'(字符型)++且每次调用它们所在的函数时,不再重新赋初值,只是保留上次调用结束时的值++ 。(只初始化一次,不初始化默认值为0)
当需要保留函数上一次调用结束时的值或者变量只被引用而不改变其值时,才使用静态变量。
寄存器变量
一般情况下,变量的值都是存储在内存中的。为提高执行效率,C语言允许将局部变量的值存放到寄存器中,这种变量就称为寄存器变量。其定义格式为:
register数据类型 变量表;
注意:
(1)只有局部变量才能定义成寄存器变量,即全局变量不行。
(2)允许使用的寄存器数目是有限的,不能定义任意多个寄存器变量。
外部变量
外部变量属于静态存储方式。有时需要用extern来声明外部变量,以扩展本文件
外部变量的作用域。其定义格式为:
extern 数据类型 外部变量表;