- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
局部变量存放在动态存储区中,在函数调用开始时分配动态存储空间,函数结束时释放这些空间。在程序执行过程中,这种分配和释放是动态的。 在动态存储区中存放以下数据: ①函数形参变量。在调用函数时,给形参变量分配存储空间. ②局部变量。未加static说明的局部变量,即自动变量。 ③函数调用时的现场保护和返回地址等。 对以上这些数据,在函数调用开始时分配动态存储空间,函数结束时,释放这些空间。程序运行过程中,这种分配和释放是动态的,如果在一个程序中两次调用同一函数,分配给此函数中局部变量的存储空间地址可能是不同的。如果一个程序包含了若干个函数,每个函数中的局部变量的生存期并不等于整个程序的执行周期,它只是程序执行周期的一部分。根据函数调用的需要,动态分配和释放存储空间。 * . 在C语言中每一个变量和函数有两个属性:数据类型和数据的存储类别。存储方法分为两大类:静态存储类和动态存储类。 具体包括4种:自动(auto);静态(static);寄存器(reg ister);外部(extern)。 7.6.2 局部变量的存储方式 1.自动存储类别 函数中的局部变量,如不为static存储类别都是动态分配存储空间的,存储在动态存储区中,分配和释放存储空间的工作由编译系统自动处理,因此这类局部变量称为自动变量。自动变量用关键字auto作存储类型说明。例如: 当局部变量未指明存储类别时,被定义为auto存储类别。 int f(a) /*定义函数*/ int a; /*定义a为形参*/ * . { auto int b,c=9; /*定义b、c为自动变量*/ … } b、c是自动变量,c=9,执行完f函数后自动释放其所占的存储单元。 auto也可以省略不写,则隐含确定为“自动存储类别”,它属于动态存储类别。 auto int b,c=9;与int b,c=9;是等价的。 2.静态存储类别 存储分类符static既可用于说明全局变量,也可用于说明局部变量。当其作用于局部变量时,该变量称为局部静态变量;其作用于全局变量时,该变量称为外部静态变量。 (1)局部静态变量 * . 在函数体内用static说明的变量称为静态局部变量。在程序运行期间,它占据一个永久性的存储单元,在退出函数后,值仍旧保留。静态变量是在编译时赋初值,因此在程序执行期间,一旦存储单元中的值改变,就不会再执行赋初值语句。未赋初值的变量,C编译程序将其置为0。形参不允许说明为静态存储类别。 例7.6 main() { f1(); f1(); f1(); } 运行结果: x=1 f1() { int x=0; x=x+1; printf(″x=%d\n″,x); } * . x=1 x=1 若把int x=0;改为:static int x=0; 运行结果如下: x=1 x=2 x=3 从程序可以看出,自动变量在函数每次被调用时,都进行初始化。而静态变量只在编译阶段初始化一次。在上例中,前一种情况 x是自动变量,f1()函数每次被调用时,x 都初始 化,因此,输出结果始终是1。后一种情况x是局部静态变量,f1()函数第一次被调用时,x 为0,退出时为1。第二次调用时,x的值是1,仍然存在,因此,输出时x值为2,同样,第三 次调用时,x的值为3。 (2)外部静态变量 * . 当定义一全局变量时,若将其指定为static类,则说明该全局变量只在本源程序文件中使用,其他的源程序文件不能引用该全局变量。这种外部静态变量主要用于同一程序分别由多人编写完成时的情况,避免不同编程者定义出相同名字的全局变量。 对于全局变量,不管是否加static说明,均属于静态存储变量。使用static只是为了限制其引用范围。 3.寄存器存储类别 为了提高程序的执行效率,C语言允许将局部变量的值放在CPU的通用寄存器中,这种变量称为寄存器变量。寄存器变量用关键字register说明。例如,函数体中的变量说明: register int a,b; 定义了两个寄存器变量a、b,函数运行时将尽可能把a、b的值放在寄存器中。 * . 在计算机
您可能关注的文档
最近下载
- 江苏省南通市如皋市2024-2025学年高三上学期9月第一次教学质量检测生物试题(解析版).doc VIP
- 《神经鞘瘤的诊断与治疗》课件.ppt VIP
- DB63_T 371-2001 蚕豆陵西一寸品种标准(青海省).pdf VIP
- 2024—2025学年江西省南昌市外国语学校教育集团九年级上学期10月学习质量检测化学试卷.doc VIP
- 第06课藤野先生(20张PPT).pptx VIP
- 青岛版2024-2025学年一年级数学上册第四单元《漂亮的粘贴画-11-20各数的认识》大单元教学设计.docx VIP
- 关于市民对“广州交警”微信使用情况调查(可编辑).doc VIP
- 画法几何之父蒙日.pdf VIP
- 高中课前三分钟的励志演讲稿.pptx
- 股市趋势技术分析—图解 (前人笔记非常详细).doc VIP
文档评论(0)