- 1、本文档共22页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本章重点 12.1 局部变量、全局变量和存储分类 12.2 局部变量及其作用域和生存期 12.3 全局变量及其作用域和生存期 12.4 函数的存储分类 12.1 局部变量、全局变量和存储分类 12.1.1 用户标识符的作用域 标识符的作用域就是指程序中的某一部分,在这一部分中,该标识符是有意义的,可以被C编译和连接程序所识别。 例如,变量都有自己的作用域,在一个函数内定义的变量不能在其它函数中引用;变量的作用域与其定义语句在程序中出现的部位有直接关系。据此可以划分出局部变量和全局变量。 12.1.2 局部变量、全局变量和存储分类 1.局部变量 在一个函数内(或复合语句中)定义的变量称为内部变量,这些变量只能在定义它的函数(或复合语句)中使用,离开了定义它的函数(或复合语句)就不能使用,把这些变量称“局部变量”。例如: float func1(int a) { int b; …… } /*本函数中变量a,b有效*/ 几点说明: (1)主函数中定义的变量m和n是局部变量,只能在主函数中有效,在其它函数中无效。 (2)不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰。如func1函数中定义的b和func2函数中的b,它们占有不同的存储单元,是不同的变量。 (3)形式参数也是局部变量。形式参数也只能在本函数中有效,其它函数不能调用。如形式参数a只能在func1函数中有效,形式参数x,y只能在func2函数中有效。 (4)在函数内部的复合语句中定义的变量,只在该复合语句中有效,出了复合语句就无效。在函数开始定义的变量也可以与复合语句中的变量相同,但它们代表的不是同一个变量,它们占用不同的存储单元。 2.全局变量 在函数之外定义的变量称为外部变量,外部变量是全局变量,全局变量可以为本源程序中的所有其它函数所公有。它的有效范围是从定义变量的位置开始到本源文件结束。例如: int a=3,b=4;/* 定义两个外部变量a和b,其作用范围全局的即从此处到程序结束*/ Main() { int a,b; /*变量a,b是局部变量,其作用范围为main函数*/ …} int c, d; /*定义两个外部变量c和d,其作用范围从此处到程序结束*/ Void f1(int a, int b) {…} 几点说明: (1)全局变量必须定义在函数之外,如变量a、c、m和n。 (2)全局变量的有效范围是从定义的位置开始到整个程序的结束。如a和c的有效范围是整个程序,而m和n的有效范围仅是f1函数 (3)在一个函数中可以使用局部变量和相应的全局变量。 (4)局部变量可以和全局变量同名,若同名,在函数中使用的变量是局部变量。 3.存储分类 变量具有数据类型,C语言的编译系统根据变量的数据类型给变量分配存储空间,用来存放该变量的值,也就是说变量的数据类型决定了变量占多少个存储单元。变量的存储类型有四个,分别是自动型、寄存器型、静态型和外部参照型,其说明符分别是auto、register、static和extern。 12.2 局部变量及其作用域和生存期 12.2.1 auto变量 当在函数内部或复合语句内定义变量时,如果没有指定存储类或使用了auto说明符,系统就认为所定义的变量具有自动类别。例如: float a; 等价于 auto float a; 12.2.2 register变量 寄存器变量也是自动类变量。它与auto变量的区别在于,寄存器型变量是分配在CPU的通用寄存器中的,而不是像一般变量那样,占内存单元。 12.2.3 静态存储类的局部变量 当在函数体(或复合语句)内部,用static来说明一个变量,可以称为静态局部变量,其作用域仍与auto、register类型的变量一样。 int fun(int x[], int n) { static int sum=0,i; for (i=0; in; i++) sum+=x[i]; return sum; } main() { int a[]={1,2,3,4,5}, b[]={6,7,8,9}, s=0; s=fun(a,5)+fun(b,4); printf(%d\n,s); } 60 12.3 全局变量及其作用域和生存期 12.3.1 全局变量的作用域和生存期 全局变量只有静态类别。对于全局变量可以使用extern和static两种说明符。 全局变量是再函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束为止。 int a=4, c=3; main() { void f1(int, int); int a=5, b; b=
您可能关注的文档
- 计算机二级C语言 编程题.doc
- 计算机二级C语言 第11章 对函数的进一步讨论.ppt
- 计算机二级C语言 南开100.doc
- 计算机二级C语言笔试复习资料.doc
- 计算机二级C语言笔试——公共基础知识选择80题.doc
- 计算机二级C语言测试题(含答案).doc
- 计算机二级C语言程序设计第9讲-1.ppt
- 计算机二级C语言程序设计第10讲.ppt
- 计算机二级C语言程序设计第11讲.ppt
- 计算机二级C语言辅导 11章.ppt
- TSTIC 120083-2023 电化学储能电站电池系统数字化运维服务要求.pdf
- 病虫害防治工作总结.pdf
- TSTIC 120085-2023 船舶拖带服务规范.pdf
- 健身安全课件图片最新完整版本.pptx
- (新统编版)语文二年级下册 第六单元 大单元教学计划.docx
- TSTIC 120081-2023 港口与航道工程施工总承包服务规范.pdf
- THEBQIA 304-2024 型钢智能检测设备设计规范.pdf
- 健身房消防培训课件最新完整版本.pptx
- 广东省深圳市红山中学2024-2025学年高二(下)第一次段考语文试卷(含答案).docx
- 广东省深圳市建文外国语学校两学部2025届高三下学期二模物理试题(含答案).docx
文档评论(0)