第四章-2存储类型.ppt

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

第四章模块化程序设计

变量的存储属性内容:变量的存储器类型、变量的生存期变量的可见性重点:动态变量静态变量4.7变量的存储属性1.变量的存储器类型外存。主存。寄存器。内存中供用户使用的空间有三部分:2.变量的生存期(存在性)永久(静态)存储变量。程序执行的整个过程。动态存储变量。只在程序执行的某一段时间内存在。3.变量的作用域(可见性,可引用性)全局变量。文件或文件间局部变量。函数、模块4.7.1变量的存储属性变量从可见性分为局部变量、全局变量。从变量存在的时间的长短(即变量生存期)来划分,变量还可以分为:动态存储变量、静态存储变量。变量的存储方式决定了变量的生存期。4.7.2动态变量概念:在程序执行的某一时刻被动态地建立并在另一时刻被动态的撤销。自动变量一般形式:[auto]数据类型变量名[=初值表达式]说明:自动变量是局部变量。动态创建,没有初始化的问题。存放在动态存储区程序中应当对自动变量赋值后才能引用。函数中定义的自动变量其值,在函数调用结束后不再保留。例4.4voidcount(inta);main(){inti;for(i=0;i=3;i++)count(i);}voidcount(inta){intx;printf(%d:=%d,a,x);x+=2;printf(x+2=%d\n,x);}voidprt(void);main(){intx=1;{intx=3;prt();printf(2ndx=%d\n,x);}printf(1stx=%d\n,x);}voidprt(void){intx=5;printf(3thx=%d\n,x);}2.寄存器变量定义形式:register数据类型变量名[=赋值语句]例4.5voidm_table(void){registerinti,j;for(i=1;i=9;i++){for(j=1;j=i;j++)printf(%d*%d=%d,i,j,i*j);putchar(\n);}}说明:寄存器变量只能用于基本整型变量、短整型整型变量和字符型变量。寄存器变量的分配方式是动态分配的。由于CPU中的通用寄存器数目有限,通常只把少数使用频繁的变量定义为寄存器变量。用于计数器。当申请的寄存器数量超出系统,自动转成auto变量。C标准对寄存器存储类别不做硬性统一规定。动态变量总结:作用域:本模块内有效。生存期:本模块结束后释放空间。所有全局变量和用关键字static作存储类型说明的局部变量称为静态变量。4.7.3.1用static声明局部变量静态局部变量的定义格式:static类型说明变量名[=初始化值];static是静态存储方式关键词,不能省略。静态局部变量的存储空间是在程序编译时由系统分配的,且在程序运行的整个期间都固定不变。该类变量在其函数调用结束后仍然可以保留变量值。下次调用该函数,静态局部变量中仍保留上次调用结束时的值。(生存期)静态局部变量初始化。程序编译器给变量赋予初值。如果没有显示初始化时,编译将把他们初始化为0。静态局部变量的值只能在本函数(模块)中使用(作用域)。4.7.3.2说明1.静态变量的存储空间:固定的,直到该程序结束。2.静态变量的初始化是在编译时进行的。未显式初始化时,编译时将把他们初始化为零。3.定义形式:static数据类型变量名[=初始化常数表达式]4.初始化:静态变量和外部变量。5.生存期:在函数多次被调用的过程中,静态局部变量的值具有可继承性。6.由于所有全局变量都是静态类的,C规定,在定义全局变量时“static”可以省去不写。例4.6main(){increment();increment();}voidincrement(){intx=0;//staticintx=0;x++;printf(%d,x);}7.静态局部变量的可见性:本函数(模块)可用。8.静态外部变量可见性:本文件。静态变量的特点:静态局部变量在整个程序运行期间固定占有存储单元。静态局部变量和全局变量一样,只在编译时赋

文档评论(0)

金华 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档