首页 > 代码库 > 【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存储类型

该存储类型主要是为了引用其他文件的全局变量和函数的。