首页 > 代码库 > C语言中的存储类型
C语言中的存储类型
变量的生存期和作用域:
- 存储在静态存储区的变量,在编译时就分配了内存空间,在整个程序执行中,内存单元一直保持到程序运行结束被释放,这类变量的生存期为整个程序的运行期;
- 存储在动态区的变量,只有当程序执行到所在的函数被调用时,系统才为其分配内存空间,函数调用结束,变量即被释放,这类变量的生存期仅为函数的调用时间;
- 变量按作用域不同可分为局部变量和全局变量;
- 局部变量存储于动态存储区,全局变量存储于静态存储区;
变量的存储类型:
- 变量的作用域不同,本质上是由于变量的存储类型不同,分auto,register,static,extern四种存储类型,其中自动类型和寄存器的变量属于动态存储方式;而外部类型和静态类型属于静态存储方式;
- 自动变量属于局部变量,具有局部变量的一切特点;寄存器类型是直接把变量存储在CPU的通用寄存器中,由于寄存器的内存操作速度要快,将会大大提高程序的执行速度;
- 静态类型变量属于静态存储方式,但属于静态存储方式的变量不一定就是静态变量,如外部变量,静态存储方式即上文中说的存储在静态存储区吧;
- 静态变量又分为静态局部变量和静态全局变量;局部变量属于动态存储方式,但静态局部变量则属于静态存储方式,系统自动为静态变量赋初值,而自动变量的初值不确定;全局变量本身就是静态存储方式,而静态全局变量与全局变量区别在于:全局变量的作用域是整个源程序,而静态全局变量作用域则是定义该变量的源文件;
- 总结:静态局部变量实际上改变了局部变量(默认自动变量)的存储方式,从而改变了生存期和作用域;静态全局变量仅改变了全局变量的作用域,限制了全局变量的使用范围;
- 外部类型就是定义在所有函数之外的全局变量,存储于静态存储区,与静态变量一样,系统自动为未初始化的变量赋0值;
C语言中的存储类型
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。