《c语言程序设计教学课件》第6章.ppt

上传人:牧羊曲112 文档编号:5896100 上传时间:2023-08-31 格式:PPT 页数:41 大小:1.47MB
返回 下载 相关 举报
《c语言程序设计教学课件》第6章.ppt_第1页
第1页 / 共41页
《c语言程序设计教学课件》第6章.ppt_第2页
第2页 / 共41页
《c语言程序设计教学课件》第6章.ppt_第3页
第3页 / 共41页
《c语言程序设计教学课件》第6章.ppt_第4页
第4页 / 共41页
《c语言程序设计教学课件》第6章.ppt_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《《c语言程序设计教学课件》第6章.ppt》由会员分享,可在线阅读,更多相关《《c语言程序设计教学课件》第6章.ppt(41页珍藏版)》请在三一办公上搜索。

1、(The C Language Programming),C语言程序设计,2,3,第6章 函数与编译预处理,6.1 模块化程序设计与函数6.2 函数的定义与调用 6.3 函数的递归调用6.4 变量作用域与存储方式6.5 内部函数和外部函数6.6 编译预处理6.7 程序举例,4,本节课重点:变量作用域:局部变量与全局变量;变量存储方式:静态存储与动态存储;变量生存期的概念。本节课难点:变量作用域与存储方式的概念。,5,6.4 变量作用域与存储方式,1、变量的作用域,6,#include stdio.hvoid fun()int a=3,b=4;printf(a=%d,b=%dn,a,b);mai

2、n()int a=1,b=2;fun();printf(a=%d,b=%dn,a,b);,输出结果:a=3,b=4a=1,b=2,(1)局部变量,7,#include stdio.hint a,b;void f1()int c;c=a*b;a=b;b=c;printf(c=%dn,c);main()a=3;b=4;f1();printf(a=%d,b=%dn,a,b);,输出结果:c12a=4,b=12,(2)全局变量,8,将同一源文件中全局变量的作用域向上扩展。引用其他源文件中定义的全局变量。,(3)外部变量的使用,声明格式如下:extern 类型说明符 外部变量名;,9,#include

3、stdio.hint a;int fun(int x,int y)int d;extern int c;d=x*y*c;return d;main()a=2;extern int b;printf(%dn,fun(a,b);int b=3,c=4;,运行结果:24,10,11,12,对于全局变量有以下几点说明:全局变量就是外部变量。同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。由于全局变量可在多个函数中使用,因而降低了函数的独立性。从模块化程序设计的观点来看这是不利的,因此尽量不要使用全局变量。,13,#include stdio.hint a=3,b=5;

4、max(int a,int b)int c;c=ab?a:b;return(c);main()int a=8;printf(max=%d,max(a,b);,运行结果:max=8,14,变量定义的完整格式为:存储类别 数据类型 变量名,变量名,2、变量的存储类别与生命期,15,自动变量具有以下特点:作用域仅限于定义该变量的结构内。属于动态存储方式。不同的个体中(函数或复合语句内)允许使用同名的自动变量而不会混淆。,(1)自动变量(auto),16,#include stdio.hmain()int x=1;void prt();int x=3;prt();printf(1:x=%dn,x);p

5、rintf(2:x=%dn,x);void prt()int x=5;printf(3:x=%dn,x);,3:x=51:x=32:x=1,17,(2)静态变量(static)静态变量的定义形式为:static 类型说明 变量名,变量名,在局部变量的类型说明前加上static构成局部静态变量。例如:static int a,b;static float x;,18,局部自动变量与局部静态变量对比,19,#include stdio.hvoid f(int a)int j=0;j+;j=a+j;printf(%dn,j);main()int i;for(i=1;i=3;i+)f(i);,运行结果

6、:234,20,#include stdio.hvoid f(int a)static int j=0;j+;j=a+j;printf(%dn,j);main()int i;for(i=1;i=3;i+)f(i);,运行结果:259,21,全局变量与全局静态变量对比,22,变量的值存放在CPU的寄存器中,使用时不需要访问内存,从而提高了效率。,寄存器变量只限于整型、字符型和指针型的局部变量。寄存器变量是动态变量,而且数目有限,一般仅允许说明两个寄存器变量。,例如:register int d;,(3)寄存器变量(register),23,#include stdio.hmain()regist

7、er int i,s=0;for(i=1;i=100;i+)s+=i;printf(s=%dn,s);,例6.8 编程计算:s1+2+3+4+100。,24,只能被本文件中其他函数所调用的函数,称为内部函数。static 类型名 函数名(形参表)外部函数就是允许其他文件调用的函数。extern 类型名 函数名(形参表),6.5 内部函数和外部函数,省略extern隐含为外部函数,25,以“#”开头的行为编译预处理标志。合理地使用预处理功能,可使编写的程序便于阅读、修改、移植和调试。,6.6 编译预处理,1.宏定义,一般形式为:#define 标识符 字符串,例:#define N 100,(1

8、)不带参数的宏定义,宏名,26,对于宏定义的几点说明:编译时用字符串取代宏名,只是一种简单的代换。宏定义行尾不要加分号。宏定义必须写在函数之外,其作用域为从定义位置起到源程序结束。如要终止宏定义的作用域可使用#undef命令。,27,#define PI 3.14159#include stdio.hmain()#undef PI/*终止PI的作用域*/f1(),28,一般形式为:#define 宏名(形参表)字符串,(2)带参数的宏定义,对带参数的宏,在调用时,不仅要宏展开,而且要用实参去代换形参。,带参数宏调用的一般形式为:宏名(实参表),29,#define MAX(x,y)xy?x:y

9、#include stdio.hmain()int a,b,max;scanf(%d%d,30,宏定义中的形参最好括起来,以避免代换时出错。,#define SQR(y)(y)(y)#include stdio.hmain()int i;for(i=1;i=3;i+)printf(%dn,SQR(i+1);,#define SQR(y)yy#include stdio.hmain()int i;for(i=1;i=3;i+)printf(%dn,SQR(i+1);,结果:4 9 16,结果:357,31,所谓“文件包含”是指将另外的文件包含到本文件之中。文件包含命令的一般形式为:#includ

10、e 文件名或#include 例如:#include#include math.h,2、文件包含,32,3、条件编译略(自学)6.7 程序举例自学,33,小 结,掌握变量作用域的概念,掌握局部变量和全局变量的概念;掌握变量存储类别的概念,掌握静态存储和动态存储的概念;学会使用#define进行宏定义;学会使用#include进行文件包含。,34,作 业P104 三、编程题:3,35,课堂练习,#include#define M(x)x+100int a=1;int fun(int x)static int b=1;b+;return x+a+b;main()int a=2,i;a=M(a);p

11、rintf(a=%dn,a);for(i=1;i=3;i+)printf(%dn,fun(i);,写程序结果:,运行结果:a=102468,36,3、以下程序的输出结果是_。#include#define FUDGE(y)2.84+y#define PR(a)printf(%d,(int)(a)#define PRINT1(a)PR(a);putchar(n)main()int x=2;PRINT1(FUDGE(5)*x);A、12 B、13 C、15 D、11,37,1、已知i、j、k为int型变量,若从键盘输入:i=1,j=2,k=3,使i的值为1、j的值为2、k的值为3,以下选项中正确的

12、输入语句是_。A、scanf(%2d%2d%2d,38,3、设a=5、b=6、c=7、d=8、m=2、n=2,执行(m=ad)后n的值为_。A、4 B、2 C、3 D、1,39,6、以下程序中,while循环的循环次数是_。main()int i=0;while(i10)if(i1)continue;if(i=5)break;i+;.A、10 B、1 C、6 D、死循环,不能确定次数,40,main()int a,b;for(a=1,b=1;a=10)break;if(b%3=1)b+=3;continue;printf(%dn,a);A、4 B、6 C、5 D、101,*,不是结束,是开始,End,*,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号