C语⾔中的四种存储类型

变量和函数的属性包括数据类型和数据的存储类别,存储类别指数据在内存中存储⽅式(静态和动态),包含auto,static,register,extern四种。
⼀、auto存储类型
⽤auto存储类型说明的变量都是局部于某个程序范围内的,只能在某个程序范围内使⽤,通常存在于函数体内或函数中的复合语句⾥。
在函数体内,auto声明的变量是局部变量。存放到栈空间中,当函数执⾏完毕,栈空间就会被系统⾃动释放。
⼆、register存储类型
register称为寄存器型,使⽤register关键词说明的变量,主要⽬的是想将所说明的变量放⼊CPU的寄存器存储空间中,这样可以加快程序的运⾏速度。
但CPU的寄存器数量也是有限的,当没有申请到寄存器来存储此变量时,该变量则⾃动转为auto类型(声明为寄存器存储类型的变量,不能够取地址!)
三、static存储类型
在函数体内说明的static 存储类型的变量也是⼀种局部变量,与auto最⼤不同点是:static存储类型的变量在内存中是以固定地址存放的,⽽不是以堆栈⽅式存放的;只要整个程序还在继续运⾏,静态变量就不会随着说明它的程序段的结束⽽消失,当下次再调⽤该函数,该存储类型的变量不再重新说明,⽽且还保留上次调⽤结束的数值。
当static修饰⼀个全局变量时,它的作⽤则是限定了此全局变量不能被外部⽂件所引⽤,限定了该全局变量的作⽤域。
当static修饰⼀个局部函数时,同样的作⽤也是限定了本代码段的作⽤域仅限于本⽂件,不得被外部⽂件引⽤
四、extern存储类型
extern声明的存储类型被称为外部参照引⽤型,使⽤extern说明的变量是想引⽤在其它⽂件中函数体外部说明的变量。

--------------------------------------------------------

 

你可能感兴趣的:(c语言)