- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章 c语言中用户标识符作用域和存储类
C语言程序设计 12.1 局部变量、全局变量和存储分类 所谓变量的“作用域”就是指变量在程序中的某一部分有效,能被C编译和连接程序所识别。 变量分类: 1、按作用域分: 1)局部变量:在函数内部或复合语句定义的变量。函数的形参也属于局部变量,也称内部变量。 2)全局变量:在函数外部定义的变量,也称外部变量。 第12章 C语言中用户标识符的作用域和存储类 2、按存储类别分: 1)自动类: 2)静态类: 局部变量既可说明为自动变量也可说明为静态类。 全局变量只能是静态类。 3、四个与两种存储类别有关的说明符: 1)auto(自动) 2)register(寄存器) 3)static(静态类) 4)extern(外部) 12.2 局部变量及其作用域和生存期 一、auto变量 1、当在函数内部或复合语句内定义变量时,如果没有指定存储类,或使用了auto说明符,系统就认为所定义的变量具有自动类别。 2、auto变量的存储单元被分配在内存的动态存储区。每当进入函数体(或复合语句)时,系统自动为auto变量分配存储单元;退出时自动释放这些存储单元另作它用。 fun(int a) { a=5; } main() { auto int a=8; fun(a); printf(“%d”,a); } 二、register变量 1、寄存器变量也是自动类变量。它与auto变量的区别在于:用register说明变量是建议编译程序将变量的值保留在CPU的寄存器中,而不是象一般变量那样,占内存单元。 2、CPU中寄存器的数目是有限的,因此只能说明少量的寄存器变量。 3、由于register变量的值是放在寄存器内而不是放在内存中,所以register变量没有地址,也就不能对它进行求地址运算。 三、静态存储类的局部变量 当在函数体(或复合语句)内部,用static来说明一个变量时,称该变量为静态局部变量。静态局部变量的作用域与auto、register类的变量一样,但它与前者有两点本质上的区别: 1、在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久性的存储单元。 2、静态局部变量的初值是编译时赋予的,在程序执行期间不再赋予初值。对未赋初值的静态局部变量,C编译程序自动给它赋初值0。 练习:以下程序的输出结果是_____。 #include stdio.h int f() { static int i=0; int s=1; s+=i;i++; return s; } main() { int i,a=0; for(i=0;i2;i++) a+=f(); printf(“%d”,a); } A)20 B)24 C)25 D)3 √ 12.3 全局变量及其作用域和生存期 一、全局变量的作用域和生存器 1、全局变量的作用域从变量定义的位置开始,到整个源文件结束为止。 2、当函数内有与全局变量名相同的局部变量时,则在该函数中,此全局变量被屏蔽,在该函数内,访问的是局部变量。 #include stdio.h int a=2; void fun() {print(“%d”,a);} main() { int a=3; printf(“%d”,a); fun(); } 练习:以下程序的输出结果是_____。 #include stdio.h int a=3; main() { int s=0; { int a=5;s+=a++; } s+=a++; printf(“%d”,s); } A)7 B)8 C)10 D)11 √ 二、在同一编译单位内用extern说明符扩展全局变量的作用域 全局变量的说明与全局变量的定义不同:变量的定义只能出现一次,在定义全局变量时,不可使用extern说明符;而对全局变量的说明,则可以出现在需要的地方,这时必须用extern说明符。 三、在不同编译单位内用extern说明符扩展全局变量的作用域 /*file1.c文件*/ #include stdio.h int x,y; /*定义全局变量*/ void fun1(); void fun2(); void fun3(); main
您可能关注的文档
- 模块4-单元16-课时1 考点二 社会基本矛盾运动和社会历史发展总趋势.ppt
- 梁润军-6s在护理工作中应运.ppt
- 步步高浙江专用2017届高考历史二轮复习阶段三现代中国与西方世界专题十七当今世界经济全球化趋势.doc
- 步步高2014届高考政治二轮复习课件(新课标通用):必修2 专题七 国际社会与我国外交政策.ppt
- 步步高2017届高考地理二轮复习专题九区域地理环境与人类活动考点26认识地区课件.ppt
- 毕博-福建兴业银行:建立以能力素质模型为核心战略性人力资源管理体系之三.ppt
- 支撑体系脚手架(格式).ppt
- 汽车电子技术专业人才培养方案2015(6.26).doc
- 法律基础知识培训---食品公司.ppt
- 支设安全专项施工方案.doc
- 2025年中国铸管沥青漆喷涂机市场调查研究报告.docx
- 2025至2031年中国聚四氟乙割管料行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国屏蔽箱行业投资前景及策略咨询研究报告.docx
- 2025年中国B级电源电涌保护器市场调查研究报告.docx
- 2025至2031年中国陶瓷印章行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国保冷材料行业投资前景及策略咨询研究报告.docx
- 2025至2031年中国金彩立雕玻璃行业投资前景及策略咨询研究报告.docx
- 2025至2030年中国机箱螺母柱数据监测研究报告.docx
- 2025至2030年中国小GS管装饰头数据监测研究报告.docx
- 2025至2030年中国气动电阻焊机数据监测研究报告.docx
文档评论(0)