- 1、本文档共78页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
大学C语言程序设计基础第7章
练习:写出下列程序的运行结果 int a=5; main() {void p1(),p2(); printf(a=%d\n,a); p1(); p2(); } void p1() { printf(a*a=%d\n,a*a); a=8; } void p2() { printf(a*a*a=%d\n,a*a*a); } printf(a=%d\n,5); printf(a*a=%d\n,a*a); p1(); a=8; p2(); printf(a*a*a=%d\n,a*a*a); 输出:a=5 a*a*a=512 a*a=25 程序一进入main()函数,变量x就被创建 当程序运行到此局部范围内(即花括号内)时创建,用完即撤消,即释放变量。 当程序运行到函数prt()内部时,变量x才被创建,离开函数时,变量就被释放 main( ) { int x=1; { void prt(void); int x=3; prt( ); printf(x=%d\n,x); } printf(“x=%d\n,x); } void prt(void) { int x=5; printf(“x=%d\n,x); } 练习: § 7.9 变量的存储类别 一、动态存储方式与静态动态存储方式:(变量的生存期) 静态存储方式:在程序运行期间分配固定的存储空间的方式。 动态存储方式:程序运行期间根据需要进行动态的分配存储空间的方式。 ● 用户存储空间可以分为三个部分:程序区, 静态存储区, 动态存储区 ? ① 程序区:用于存放程序编译后形成的可执行代码(执行时装入)。 ② 静态存储区:用于存放程序中的静态数据,如全局变量等。 ③ 动态存储区:用于存放程序中的动态数据,如函数形参、局部变量、函数调用时的现场保护和返回地址等。 ●静态数据:在静态存储区中分配存储单元并在整个程序执行过程中占用该单元,直到程序运行结束。 ●动态数据:在函数执行时分配存储空间,函数结束时释放这些空间。 ●动态存储区存放以下数据: (1) 函数形式参数; (2) 自动变量(未加static声明的局部变量); (3) 函数调用时的现场保护数据和返回地址. ▼ 以上这些数据,在函数调用时分配动态存储空间,函数结束时释放 这些空间。 ●变量和函数有两个属性: 数据类型 存储类别(生存期)。 数据类型:如:int, float, char…. 存储类别:静态存储和动态存储二大类。四种: 自动局部变量(auto)、 静态局部变量(static)、 寄存器变量 (register)、 外部变量 (extern)。 二、动态存储的auto类局部变量 auto 类型定义符 变量名; 如:auto float a,b; 等价于:float a,b; ●自动变量是局部变量,若一个局部变量没有定义类别,则隐含为动 态存储auto类别。如果定义时没有给自动变量赋初值,该自动变量 的值是不确定的。 ●如果定义时给自动变量赋了初值,则每次进入该函数时都要执行一 次这种赋初值的操作(分配存储空间)。 ●函数调用结束时释放这些存储空间.。即auto变量没有 “继承性”。 例如: int f(int a) /*定义f函数,a为参数*/ {auto int b,c=3; /*定义b,c自动变量*/ …… } a是形参,b,c是自动变量,对c赋初值3。执行完 f 函数后,自动 释放a,b,c所占的存储单元。 三、用static声明的静态存储的局部变量 有时希望局部变量的值在函数调用结束后保留,这时就应该指定局部变量 为“静态局部变量”,用关键字 static 进行声明。 static 类型定义符 变量名; 例: 考察静态局部变量的值: (演示) void f(int c) /*形参也是动态存储的auto变量*/ { int a=0; /*自动变量 a */ static int b=0; /*静态局部变量b */ a++; b++; p
您可能关注的文档
最近下载
- 中华民族共同体概论课件第八讲共奉中国与中华民族聚力发展.pptx VIP
- 一种碱性磷酸酶标记抗体或抗原的方法.pdf VIP
- 2024-2025部编人教版小学语文1一年级上册(全册)优秀课件.ppt
- 手术室PDCA——提高急诊手术器械物品准备的完善率.pptx VIP
- 宠物行业宠物智能喂食器研发方案.doc VIP
- 老年人徒手肌力评定健康促进课件.pptx VIP
- TPM管理培训课件.pptx VIP
- 中华民族共同体概论大讲堂课件第七讲华夷一体与中华民族空前繁盛(隋唐五代时期).pdf VIP
- 灰库系统钢结构加固施工方案.docx VIP
- 2025至2030中国中医馆行业市场发展分析及前景趋势与投资机会报告.docx
文档评论(0)