开发者社区> 华章计算机> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

《编写高质量代码:改善c程序代码的125个建议》——建议8:正确地选择变量的存储类型

简介:
+关注继续查看

本节书摘来自华章计算机《编写高质量代码:改善c程序代码的125个建议》一书中的第1章,建议8,作者:马 伟 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

建议8:正确地选择变量的存储类型

在计算机中,保存变量当前值的存储单元有两类:一类是内存,另一类是CPU的寄存器。变量的存储类型关系到变量的存储位置,在C语言中,为变量提供了4种存储类型:auto(自动)型、static(静态)型、register(寄存器)型和extern(外部)型。它们关系到变量在内存中的存放位置,由此决定了变量的保留时间和变量的作用范围。
变量的保留时间又称为生存期,从时间的角度来看,可将变量分为静态存储和动态存储两种情况。静态存储是指变量存储在内存的静态存储区中,在编译时就为它分配了存储空间,在整个程序的运行期间,该变量占有固定的存储单元,程序执行结束后,这部分空间才会释放,变量的值在整个程序中始终存在;动态存储是指变量存储在内存的动态存储区中,在程序的运行过程中,只有当变量所在的函数被调用时,编译系统才临时为该变量分配一段内存单元,函数调用结束时,该变量空间就会释放,变量的值只在函数调用期存在。
变量的作用范围又称为作用域,从空间角度来看,可以将变量分为局部变量和全局变量。局部变量是在一个函数或复合语句内定义的变量,它仅在函数或复合语句内有效,编译时,编译系统不为局部变量分配内存单元,而是在程序运行过程中,当局部变量所在的函数被调用时,编译系统才会根据需要临时分配内存,调用结束后,释放空间;全局变量是在函数之外定义的变量,其作用范围为从定义处开始到本文件结束,编译时,编译系统会为其分配固定的内存单元,在程序运行的自始至终它都占用着固定的单元。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
文章
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
用RxSwift写易维护易读的愉悦代码
立即下载
小程序 大世界
立即下载
《15分钟打造你自己的小程序》
立即下载