C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt

C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt

ID:50044431

大小:122.00 KB

页数:20页

时间:2020-03-08

C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt_第1页
C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt_第2页
C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt_第3页
C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt_第4页
C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt_第5页
资源描述:

《C语言程序设计教程 教学课件 作者 周海燕 李智 第11章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第11章用户标识符的作用域和存储类别11.1作用域和存储类别的概念11.2局部变量和全局变量11.3局部变量的存储类别和生存期11.4全局变量的存储类别和生存期11.5函数的存储分类11.6如何运行一个由多个源文件组成的程序11.1作用域和存储类别的概念11.1.1作用域11.1.2存储类别和生存期11.2局部变量和全局变量在C语言中,局部变量和全局变量的划分完全取决于变量定义的位置。11.2.1局部变量及其作用域凡是在函数内部定义的变量都是局部变量(也称作内部变量),包括在函数内部复合语句中定义的变量和函数形参表中说明的形式参数。局部变量只能在函数内部使用,其作用域是从定义位置起至

2、函数体或复合语句体结束为止。例11.1局部变量的作用域。intfun(intx,inty){intz;z=x+y;returnz;}局部变量x、y、z的作用域main(){inta=2,b=3;{intc;c=a+b;printf("c=%d",c);}printf("a+b=%d",fun(a,b));}局部变量c的作用域局部变量a、b的作用域说明(1)在函数fun中定义的变量z和形参x、y都只在函数fun中有效,在主函数中不能引用。(2)在主函数开始定义的局部变量a和b的作用域是整个main函数,在其他函数中不能引用。(3)在main函数的复合语句中定义的局部变量c的作用

3、域仅限于此复合语句,在复合语句外面不能使用。(4)不同作用域中的局部变量可以同名,它们占据着不同的内存单元,不会发生混淆。当作用域产生重叠时,处于“内部”的变量起作用。例如:main(){inta=2,b=3,c=0;{intc;c=a+b;printf("复合语句内c=%d",c);}printf("复合语句外c=%d",c);}复合语句内局部变量c的作用域主函数中局部变量c的作用域程序运行时输出:复合语句内c=5复合语句外c=0从以上例子中可以看出:当主函数中的局部变量c与函数内部复合语句中的局部变量c同名时,在复合语句内部是自身的局部变量起作用,main函数中的局部变量

4、c被屏蔽。11.2.2全局变量及其作用域凡是在函数外部任何位置上的变量都属于全局变量(也称作外部变量)。全局变量的作用域分以下两种情况。1.全局变量与局部变量不同名时,其作用域是从定义位置开始到它所在的源文件结束为止例11.2全局变量作用域示意。intx=1;voidfun(intn){…}inty=2;main(){…}intz=3;全局变量z的作用域全局变量y的作用域全局变量x的作用域说明(1)变量x、y、z都是在函数体外进行的定义,所以都属于全局变量。(2)全局变量x定义在了源程序的开始,它的作用域覆盖了整个源程序。(3)全局变量y定义在了函数fun之后、main函数之前,所以

5、它的作用域不包括函数fun。(4)全局变量z定义在了源程序的末尾,使得它既不能在函数fun中使用,也不能在main函数中使用。由此可见:同是全局变量,由于定义语句的位置不同,作用域的范围也有很大区别。不要误以为全局变量的作用域范围一定比局部变量的作用域范围大。2.全局变量与局部变量同名时,全局变量的作用域不包括同名局部变量的作用域请看以下的简单例子:inta=1;/*定义全局变量a*/main(){inta=2;/*定义局部变量a*/fun();printf("在main函数中a=%d",a);}fun(){printf("在fun函数中a=%d",a);}程序运行时输出:在

6、fun函数中a=1在main函数中a=2说明(1)在源程序的开头定义了全局变量a,并赋有初值1。它的作用域原本应该包括整个源程序。(2)在main函数中定义了局部变量a,并赋有初值2。它的作用域是整个main函数。(3)由于全局变量a与局部变量a出现了重名,因此,在main函数中是局部变量a起作用,全局变量a将被屏蔽而不起作用。(4)在实际应用中应避免同名现象的出现,以增强程序的可读性。使用全局变量,可以不经过参数传递,直接在函数之间共享数据。但由此带来的弊端也是很明显的:程序中任何一个函数对变量的修改,都会影响到其他函数对该变量的引用,容易造成隐蔽的错误。因此,除非十分必要,一般情

7、况下不要使用全局变量。11.3局部变量的存储类别和生存期11.3.1auto变量11.3.2register变量11.3.3用static说明局部变量11.4全局变量的存储类别和生存期11.4.1用extern说明全局变量11.4.2用static说明全局变量11.5函数的存储分类11.5.1用extern说明函数11.5.2用static说明函数11.6如何运行一个由多个源文件组成的程序

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。