首页 > 代码库 > 【C语言学习】存储类型
【C语言学习】存储类型
C语言中的存储类型主要有四种:auto、static、extern、register
★auto存储类型
默认的存储类型。在C语言中,如果忽略了变量的存储类型,那么编译器就会自动默认为auto型
★register存储类型
寄存器变量。寄存器位于CPU,它的特点是:容量小、速度快。它一般用来暂存程序中使用频繁的变量、或者一些中间变量等,能提高程序的执行速度。此类别的变量会优先分配寄存器。
★static存储类型
static定义的变量都是静态变量,用于限制作用域,无论是全局变量还是局部变量都存储在数据段上。这个关键字的作用主要在三个方面:局部变量、全局变量、函数
●应用于局部变量
对于一个存储类型声明为static的局部变量来说,它的作用域没有什么变化,只有定义该局部变量的函数可以使用它。但是,它的生命周期发生了变化。普通的局部变量的声明周期为定义它的函数的执行长度,当定义它的函数执行完后,局部变量就会被取消。但是对于static的局部变量来说,它的生命周期就是整个的函数执行期间。
●应用与全局变量
对于一个存储类型声明为static的全局变量来说,其生命周期没有什么变化,在程序执行期间,该变量一直存在,但是其作用于反而减小。因为定义为static类型的全局变量只有本文件的函数可以使用。
为什么全局变量定义成static类型后,其作用域会变小呢?
因为在一个工程中,不只是包括一个源文件,可能会包括很多的源文件。普通的全局变量在其他的源文件中是可见的,它的作用域是整个的工程,其他的文件要想引用该全局变量只要用extern声明一下就可以使用了。但是,当声明为static后,它的作用域就只限于本源文件使用,该全局变量对于其他的文件都是隐藏的,不可见的。
其实,static关键字有很多的好处。在程序设计中,不同的人完成不同的模块,为了防止不同的模块之间使用重名的全局变量,在每个模块的全局变量前面加上一个static即可。还有,如果本文件的外部变量不需要其他的文件引用,那么可以将其设置为static的静态外部变量,从而避免其他文件的误用!
●应用与函数
在一个函数前面加上static,那么这个函数的作用域仅限于本文件使用,对其他的文件是不可见的。
★extern存储类型
该存储类型主要是为了引用其他文件的全局变量和函数的。