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

上传人:hs****ma 文档编号:572479410 上传时间:2024-08-13 格式:PPT 页数:41 大小:3.48MB
返回 下载 相关 举报
《c语言程序设计教学课件》第6章2_第1页
第1页 / 共41页
《c语言程序设计教学课件》第6章2_第2页
第2页 / 共41页
《c语言程序设计教学课件》第6章2_第3页
第3页 / 共41页
《c语言程序设计教学课件》第6章2_第4页
第4页 / 共41页
《c语言程序设计教学课件》第6章2_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《《c语言程序设计教学课件》第6章2》由会员分享,可在线阅读,更多相关《《c语言程序设计教学课件》第6章2(41页珍藏版)》请在金锄头文库上搜索。

1、( The C Language Programming )2章节名称第第6 6章章 函数与编译预处理函数与编译预处理 (6.4-6.66.4-6.6)教学目的与要求掌握变量作用域与存储方式的概念掌握变量作用域与存储方式的概念 ,掌握编译预处理的,掌握编译预处理的概念,通过程序举例掌握自定义函数在程序中的应用。概念,通过程序举例掌握自定义函数在程序中的应用。教学内容6.4 6.4 变量作用域与存储方式变量作用域与存储方式 6.5 6.5 编译预处理编译预处理6.6 6.6 内部函数和外部函数内部函数和外部函数 6.7 6.7 程序举例程序举例重点变量作用域与存储方式的概念。变量作用域与存储方式

2、的概念。难点变量作用域与存储方式的概念。变量作用域与存储方式的概念。作业P104 三、编程题:三、编程题:3教学手段ppt课件、课堂练习、提问回答。教学过程(组织与方法)回顾上次课主要内容、介绍本次课重点、难点 讲解本次课内容小结作业课堂练习。3第第6 6章章 函数与编译预处理函数与编译预处理 6.1 6.1 模块化程序设计与函数模块化程序设计与函数6.2 6.2 函数的定义与调用函数的定义与调用 6.3 6.3 函数的递归调用函数的递归调用6.4 6.4 变量作用域与存储方式变量作用域与存储方式6.5 6.5 内部函数和外部函数内部函数和外部函数6.6 6.6 编译预处理编译预处理6.7 6

3、.7 程序举例程序举例 56.4 6.4 变量作用域与存储方式变量作用域与存储方式1 1、变量的作用域、变量的作用域 变量定义变量定义的三个基的三个基本位置本位置函数内部函数内部局部变量局部变量局部变量局部变量函数的参数函数的参数 形式参数形式参数函数外部函数外部全局变量全局变量全局变量全局变量6#include stdio.hvoid fun() int a=3,b=4;printf(a=%d,b=%dn,a,b);main()int a=1,b=2;fun();printf(a=%d,b=%dn,a,b); 输出结果:输出结果:a=3,b=4a=1,b=2(1 1)局部变量局部变量7#in

4、clude 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 2)全局变量全局变量8n将将同同一一源源文文件件中中全全局局变变量量的的作作用用域域向上扩展。向上扩展。n引用其他源文件中定义的全局变量。引用其他源文件中定义的全局变量。(3)外部变量的使用外部变量的使用声明格式如下:声明格式如下:extern extern 类型说明符类型说明符 外部变量名外部变量名; ;9#includ

5、e 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;运行结果运行结果:24101112对于全局变量有以下几点说明:对于全局变量有以下几点说明:n全局变量就是外部变量。全局变量就是外部变量。n同同一一源源文文件件中中,允允许许全全局局变变量量和和局局部部变变量量同同名名。在在局局部部变变量量的的作作用用域域内内,全全局局变量不起作用。变量不起作用。n由于全局变量可在多个函数中使用,因由于全局

6、变量可在多个函数中使用,因而降低了函数的独立性。而降低了函数的独立性。从模块化程序从模块化程序设计的观点来看这是不利的,因此尽量设计的观点来看这是不利的,因此尽量不要使用全局变量。不要使用全局变量。 13#include stdio.hint a=3,b=5;max(int a, int b)int c;c=ab?a:b;return(c);main()int a=8; printf(max=%d,max(a,b);运行结果:运行结果:max=814n变量定义的完整格式为:变量定义的完整格式为:存储类别存储类别 数据类型数据类型 变量名变量名,变量名变量名,2、变量的存储类别与生命期、变量的存

7、储类别与生命期 存储方式存储方式生命期生命期变量的值变量的值静态存储静态存储编译时分配存储编译时分配存储单元并始终占据单元并始终占据该单元。该单元。一直存在。一直存在。动态存储动态存储使用时分配存储使用时分配存储单元,使用完立单元,使用完立即释放。即释放。时时而而存存在在时时而而消失。消失。15自动变量具有以下特点:自动变量具有以下特点:n作用域仅限于定义该变量的结构内。作用域仅限于定义该变量的结构内。 n属于动态存储方式。属于动态存储方式。 n不同的个体中(函数或复合语句内)允不同的个体中(函数或复合语句内)允许使用同名的自动变量而不会混淆。许使用同名的自动变量而不会混淆。 (1)(1)自动

8、变量自动变量(auto)16#include stdio.hmain() int x=1; void prt( ); int x=3; prt( ); printf(1: x=%dn,x); printf(2: x=%dn,x);void prt( ) int x=5; printf(3: x=%dn,x);3:x=53:x=51:x=31:x=32:x=12:x=1x=1作用域作用域x=1作用域作用域x=3作用域作用域x=5作用域作用域17(2 2)静态变量静态变量(staticstatic)n静态变量的定义形式为:静态变量的定义形式为: staticstatic 类型说明类型说明 变量名变

9、量名, ,变量名变量名, ,n在在局局部部变变量量的的类类型型说说明明前前加加上上staticstatic构构成局部静态变量。例如:成局部静态变量。例如: staticstatic int a,b; int a,b;staticstatic float x; float x; 18l局部自动变量与局部静态变量对比局部自动变量与局部静态变量对比存储方式存储方式生存期生存期作用域作用域变量的值变量的值局部自局部自动变量动变量动态动态存储存储函数被调函数被调用时用时函数内函数内若不赋初若不赋初值,其值值,其值不确定。不确定。局部静局部静态变量态变量静态存储静态存储整个程序整个程序运行期间运行期间函数

10、内函数内编译时赋编译时赋初值初值, ,程程序运行时序运行时已有值。已有值。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); 运行结果:运行结果:23420#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); 运行结果:运行结果:25921存储方式存储方式作用域作用域全局变量全局变量静态存储静态存储可扩展到其他源

11、程可扩展到其他源程序文件中序文件中全局静态全局静态变量变量静态存储静态存储只能为该源文件内只能为该源文件内的函数公用的函数公用l全局变量与全局静态变量对比全局变量与全局静态变量对比22n变变量量的的值值存存放放在在CPU的的寄寄存存器器中中,使使用用时不需要访问内存,从而提高了效率。时不需要访问内存,从而提高了效率。寄存器变量只限于寄存器变量只限于整型整型、字符型字符型和和指针型指针型的局部变量。寄存器变量是的局部变量。寄存器变量是动态变量动态变量,而,而且数目有限,一般仅允许说明且数目有限,一般仅允许说明两个两个寄存器寄存器变量。变量。例如:例如:register int d;(3)寄存器变

12、量寄存器变量 (register)23#include stdio.hmain()register int i,s=0;for(i=1;iy?x:y#include stdio.hmain()int a,b,max;scanf(%d%d,&a,&b);max=MAX(a,b);printf(max=%dn,max); 30l宏定义中的形参最好括起来,以避免代换时出错。宏定义中的形参最好括起来,以避免代换时出错。#define SQR(y) (y) (y)#include stdio.hmain()int i;for(i=1;i=3;i+)printf(%dn,SQR(i+1);#define

13、SQR(y) y y#include stdio.hmain()int i;for(i=1;i=3;i+)printf(%dn,SQR(i+1);结果:结果: 4 9 16结果:结果:35731l所所谓谓“文文件件包包含含”是是指指将将另另外外的的文文件件包包含到本文件之中。含到本文件之中。l文件包含命令的一般形式为:文件包含命令的一般形式为:#include 文件名文件名或或#include 例如:例如:#include #include math.h2、文件包含、文件包含323 3、条件编译、条件编译略(自学)略(自学)6.7 6.7 程序举例程序举例自学自学33小 结n掌握变量作用域的概

14、念掌握变量作用域的概念,掌握局部变掌握局部变量和全局变量的概念;量和全局变量的概念;n掌握变量存储类别的概念掌握变量存储类别的概念,掌握静态掌握静态存储和动态存储的概念;存储和动态存储的概念;n学会使用学会使用#define进行宏定义;进行宏定义;n学会使用学会使用#include进行文件包含。进行文件包含。34作 业P104 三、编程题:335课堂练习课堂练习#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);printf(a=%dn,

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

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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号