- 1、本文档共97页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十二章C语言中用户标识符的作用域和存储类 知识点1:局部变量与全局变量 1.局部变量又称内部变量。全局变量又称外部变量。 2.在函数内部或复合语句内部定义的变量称局部变量,形参也是局部变量,其作用域从定义的位置开始到本函数或本复合语句结束。 3.在函数外部定义的变量称全局变量,其作用域从定义的位置开始到本源文件结束。 4.在同一个源文件中不同函数中的局部变量可以同名,不同复合语句中的局部变量可以同名。 5.在同一个源文件中,全局变量可以和局部变量同名,局部变量将屏蔽同名全局变量。 6.在函数体外进行的函数原型说明也使该函数具有全局的性质,其有效范围是从说明处起到源文件结束。 例如: int a; int f(int x,int y) { int j; j=a; …} main() {int x,y; x=a; …} 知识点2:变量的存储类别 1.C语言中,有两种存储类别:一种是自动类,一种是静态类。 2.局部变量既可以说明成自动类,也可以说明成静态类。全局变量只能是静态类。 3.存储类别有关的说明符:auto(自动)、register(寄存器)、static(静态)和extern(外部)。 4.存储类别说明符的说明形式:通常与类型名一起出现,可以放在类型名左边或右边。 例如:auto int i,j; 也可写成 int auto i,j; 知识点3:局部变量及其作用域和生存期 1.auto变量 当在函数内部或复合语句内定义变量时,如果没有指定存储类或使用了auto说明符,系统就认为所定义的变量具有自动类别。因此, float a;等价于 auto float a; auto变量的存储单元被分配在内存的动态存储区。每当进入函数体(或复合语句)时,系统自动为auto变量分配存储单元。退出时自动释放这些存储单元。因此,这类局部变量的作用域是从定义的位置起,到函数体(或复合语句)结束为止。 例如: sub(float a) { int i; … if(i0) { int n; … printf(“%d\n”,n); } … } 这里,变量i,a,n都是auto变量。但i和a的作用域是整个sub函数;而n的作用域仅限于if子名内。 生存期:所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失。 2.register变量 寄存器变量也是自动类变量。它与auto变量的区别仅在于:用register变量是将变量的值保留在CPU的寄存器中,而不是象一般变量那样,占内存单元。特点:程序运行速度快,因为访问寄存器比访问内存快。 注意:(1)CPU中寄存器的数目有限,只能说明少量寄存器变量。 (2)register变量的值存放在寄存器中,因此不能对register变量进行求地址运算。 例:以下函数power用以计算xn main() { int s; s=power(5,3); printf(“%d\n”,s); } power(int x, register int n) { register int p; for(p=1; n;n--) p=p*x; return p;} 3.静态存储类的 当在函数体(或复合语句)内部,用static来说明一个变量时,可以称该变量为静态局部变量。静态局部变量作用域与auto,register类的变量一样。 区别(1)在整个程序运行期间,静态局部变量在内存的静态存储区中占所着永久性的存储单元。即使退出函数以后,下次再进入该函数时,静态局部变量仍使用原来的存储单元。由于并不释放这些存储单元,因此这些存储单元中的值得以保留,由此可知,静态局部变量的生存期将一直延长到程序运行结束。 (2)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值。对未赋初值的静态局部变量,C编译程序自动给它赋初值0. 例:以下程序输出结果 int x=3; main() { int i; for(i=1;ix;i++) incre();} int incre() { static int x=1; x*=x+1; printf(“ %d”,x); } A.3 3 B.2 2 C.2 6 D.2 5 知识点4:全局变量及其作用域和生存期 全局变量只有静态一种类别。对于全局变量可使用extern和static两种说明符。 1.全局变量的作用域和生存期 全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。例如: int sum; main( ) {… sum++;…} int fun1() {… sum
您可能关注的文档
- Criteria及MyBatis学习总结.pptx
- CRP及hs-CRP,一种蛋白的“分身术”.pdf
- 气压传动基本回路(第6篇).pdf
- 气压基本及常用回路.ppt
- 汽车安全及节能国家重点实验室(清华).doc
- 汽车变速箱壳体成形工艺分析和模具设计.pdf
- 汽车测试假人用于实验测试方法.pdf
- 汽车车身结构及设计(免费下载).doc
- CT序列医学图像交互式分割系统的设计及实现.pdf
- 汽车车身设计-第二节.ppt
- [中央]2023年中国电子学会招聘应届生笔试历年参考题库附带答案详解.docx
- [吉安]2023年江西吉安市青原区总工会招聘协理员笔试历年参考题库附带答案详解.docx
- [中央]中华预防医学会科普信息部工作人员招聘笔试历年参考题库附带答案详解.docx
- [保定]河北保定市第二医院招聘工作人员49人笔试历年参考题库附带答案详解.docx
- [南通]江苏南通市崇川区人民法院招聘专职人民调解员10人笔试历年参考题库附带答案详解.docx
- [厦门]2023年福建厦门市机关事务管理局非在编工作人员招聘笔试历年参考题库附带答案详解.docx
- [三明]2023年福建三明市尤溪县招聘小学幼儿园新任教师79人笔试历年参考题库附带答案详解.docx
- [哈尔滨]2023年黑龙江哈尔滨市木兰县调配事业单位工作人员笔试历年参考题库附带答案详解.docx
- [上海]2023年上海市气象局所属事业单位招聘笔试历年参考题库附带答案详解.docx
- [台州]2023年浙江台州椒江区招聘中小学教师40人笔试历年参考题库附带答案详解.docx
最近下载
- 中国急性胰腺炎诊治指南(2021).docx
- 2024届高考散文阅读知识点即答题技巧概述+课件113张.pptx VIP
- 2024苏科版新教材八年级物理上册新课程内容解读课件(深度).pdf
- Unit3 第2课时Speed up Fuel up(教学设计)-三年级英语下册(外研版三起2024).pdf
- 第16课优秀影视作品欣赏与分析教学设计-2023—2024学年人教版初中综合实践活动八年级上册.docx
- 幼儿园中班音乐《章鱼和小鱼》 优质课件.pptx
- 考研真题武汉理工大学833材料科学基础历年考研真题汇编(含部分答案).docx
- 2024年度房地产市场总结报告:泉州-保利和润.docx
- 北京理工大学考博英语历年真题及详解.pdf
- 传热学(全套714页课件课件).pptx VIP
文档评论(0)