《变量作用域和预编译》.ppt
《《变量作用域和预编译》.ppt》由会员分享,可在线阅读,更多相关《《变量作用域和预编译》.ppt(29页珍藏版)》请在三一办公上搜索。
1、变量作用域和预编译,1,回顾:模块化程序设计,3.递归函数的定义和用途,回顾:模块化程序设计,课程目标:了解变量作用域的概念掌握全局变量与局部变量的区别(重点)掌握变量的存储类别(难点)参考课本P168 P175了解预编译的概念掌握宏的概念及#define的使用(重点)掌握文件包含及#include的使用参考课本P230 P239,2,本次课内容,本次课内容,3,变量的使用范围与存储类型,3、变量的使用范围及其说明方法,4、变量的存储类别及其定义方法,一、变量的使用范围与存储类型,4,变量的使用范围包括有在一个函数内部使用的变量-局部变量;在 函 数 之 外部 使用的变量-全局变量;,main
2、()int a,b;,在一个函数内部定义的变量称为局部变量,局部变量,局部变量,1、局部变量,1.1 变量的使用范围:局部变量,5,1、主函数中定义的变量也只用在主函数中有效;,2、不同函数中可以使用相同的变量名,且它们代 表不同的存储单元,互不干扰;,3、形式参数也是局部变量。其它函数是不能调用 该形参的;,4、在一个函数内部,可以在复合语句中定义变量,这些变量只能在本复合语句中有效。,1.1.1 关于局部变量使用的几点说明,6,在函数内部(包括主函数)定义的变量,称为局部变量,其作用范围只在函数内部有效,如下代码,#include void fund1(void)int nX=100;/局
3、部变量 printf(“nX in fund1=%dn”,nX);void fund2(void)int nX=200;/局部变量 printf(“nX in fund2=%dn”,nX);void main(void)int nX=50;/局部变量 printf(nX in main=%dn”,nX);fund1();fund2();,程序代码,本例中定义了三个局部变量nX,其作用范围分别作用于fund1,fund 和main函数打印结果:nX in main=50nX in fund1=100nX in fund2=200,示例:局部变量,示例:局部变量,7,char c1,c2;int
4、p=1,q=5;main()int a,b;a=p;b=q;,在函数之外定义的变量 称为 全局变量 全局变量可以为本文件中其它函数所共用。它的使用范围:从定义变量的位置开始到本源程序文件结束,全局变量,2、全局变量,1.2 变量的使用范围:全局变量,8,1、若在同一个源文件中,如有全局变量与局部 变量同名时,则在局部变量的作用范围内,全局变量不起作用。,2、设置全局变量的作用是:增加函数间数据联系的渠道。,由于同一个文件中的所有函数都能引用全局变量的值,因此如果在一个函数中改变了全局变量的值,就能影响到其它函数,相当于各个函数间有直接的传递通道。,关于全局变量使用的几点说明,1.2.1 关于全
5、局变量使用的几点说明,9,举例,示例:全局变量,int d=1;main()int a=3;fun(a);d+=a+;printf(“%dn”,d);,8,4,8,4,4,示例:全局变量,10,#include int nX=999;/全局变量 void fund1(void)printf(“nX in fund1=%dn”,nX);void fund2(void)int nX=0;/局部变量 printf(“nX in fund2=%dn”,nX);void main(void)printf(nX in main=%dn”,nX);fund1();fund2();,程 序 代 码,在此范围中
6、,局部变量nX的作用范围替代了全局变量nX的作用范围。,本例中函数fund2中的nX作用范围与全局变量nX有重叠部分,在重叠部分中使用局部变量,屏蔽掉了全局变量打印结果:nX in main=999nX in fund1=999nX in fund2=0,变量作用范围重叠问题,1.2.2 变量作用范围重叠问题,11,数 据 区(动态),数 据 区(静态),内存存储区,程 序 区,用户区,在程序运行期间分配固定 的存储空间(如 全局变量)。,只有当函数被调用时才开始分配存储空间,在函数执行结束时就释放这些空间。在程序执行过程中,这种分配和释放是动态的(如 局部变量)。,内存存储区,内存存储区,1
7、2,在C语言中,每一个变量和函数有两个属性:数据类型和数据的存储类别。数据类型,如整型、实型等;存储类别,指的是数据在计算机中的存储方式,也可以说数据的 存储地点。,内存储器(memory),寄存器(CPU),变量的存储类型,1.3、变量的存储类型,13,关键词 auto,auto int b=1,c=2;,1、局部变量的存储方式:auto,局部变量的存储方式:auto,14,关键词 static,static int b=1,c=2;,2、局部变量的存储方式:static,局部变量的存储方式:static,参见源码:9_1 exp0901,15,int f(int a)auto int b=
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 变量作用域和预编译 变量 作用 预编

链接地址:https://www.31ppt.com/p-6235183.html