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
您可能关注的文档
- 第三章手动变速器和分动器的构造与检修2汇总辨析.ppt
- 第三章数据处理(中考新突破2016版)辨析.ppt
- 第11章协作/组件/配置图试卷.ppt
- 第11章移动电子商务安全讲述试卷.ppt
- 第11章职业病防治法律制度讲述试卷.ppt
- 第11章种子贮藏期间的仓虫与鼠类控制试卷.ppt
- 第11章自然语言理解(AI应用3版)讲述试卷.ppt
- 第12~13章长期筹资讲述试卷.ppt
- 第三章数控加工系统的工艺装备辨析.ppt
- 第三章水稻种子生产辨析.ppt
- 七年级语文上册期末模拟试卷1(解析版).docx
- 七年级语文上册期末模拟试卷1(原卷版).docx
- 七年级语文上册期末模拟试卷2(原卷版).docx
- 七年级语文上册期末模拟试卷2(解析版).docx
- 期末测试卷(二)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(二)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(三)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(原卷版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
- 期末测试卷(一)(解析版)2024—2025学年七年级语文上册期末测试卷(全国版).docx
最近下载
- 2026年版初中体育与健康课标测试题及答案(共7套).docx
- 医科大学2020-2021学年第一学期期末考试护理专业《人体解剖学》B卷.docx VIP
- 医疗应急管理制度.docx VIP
- 电子巡更系统设计方案.docx VIP
- 肝硬化合并消化道出血的护理.pptx VIP
- 云南农业大学2020-2021大数据技术及应用期末考试.docx VIP
- 一份完整的冠心病病历.pptx VIP
- 中南财经政法大学2019-2020(二)《货币金融学》期末考试试卷.docx VIP
- 人工智能技术在医疗领域的应用与发展趋势.docx
- 中山大学2020级本科生期末考试 考试科目《汉语综合(上)》(A卷).docx VIP
原创力文档

文档评论(0)