




已阅读5页,还剩36页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
( The C Language Programming ) 2 章节名称第6章 函数与编译预处理 (6.4-6.6) 教学 目的与要求 掌握变量作用域与存储方式的概念 ,掌握编译预处理的 概念,通过程序举例掌握自定义函数在程序中的应用。 教学内容 6.4 变量作用域与存储方式 6.5 编译预处理 6.6 内部函数和外部函数 6.7 程序举例 重点 变量作用域与存储方式的概念。 难点 变量作用域与存储方式的概念。 作业 P104 三、编程题:3 教学手段 ppt课件、课堂练习、提问回答。 教学过程 (组织与方法 ) 回顾上次课主要内容、介绍本次课重点、难点 讲解本 次课内容小结作业课堂练习。 3 第6章 函数与编译预处理 6.1 模块化程序设计与函数 6.2 函数的定义与调用 6.3 函数的递归调用 6.4 变量作用域与存储方式 6.5 内部函数和外部函数 6.6 编译预处理 6.7 程序举例 4 本节课重点本节课重点: : n变量作用域:局部变量与全局变量; n变量存储方式:静态存储与动态存储; n变量生存期的概念。 本节课难点本节课难点: : n变量作用域与存储方式的概念。 5 6.4 变量作用域与存储方式 1、变量的作用域 变量定义 的三个基 本位置 函数内部局部变量 局部变量 函数的参数 形式参数 函数外部全局变量全局变量 6 #include “stdio.h“ void 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=4 a=1,b=2 (1)局部变量 7 #include “stdio.h“ int 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); 输出结果: c12 a=4,b=12 (2)全局变量 8 n将同一源文件中全局变量的作用域 向上扩展。 n引用其他源文件中定义的全局变量 。 (3)外部变量的使用 声明格式如下: extern 类型说明符 外部变量名; 9 #include “stdio.h“ int 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 对于全局变量有以下几点说明: n全局变量就是外部变量。 n同一源文件中,允许全局变量和局部变 量同名。在局部变量的作用域内,全局 变量不起作用。 n由于全局变量可在多个函数中使用,因 而降低了函数的独立性。从模块化程序 设计的观点来看这是不利的,因此尽量 不要使用全局变量。 13 #include “stdio.h“ int 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=8 14 n变量定义的完整格式为: 存储类别 数据类型 变量名,变量名, 2、变量的存储类别与生命期 存储方式生命期变量的值 静态存储 编译时分配存储 单元并始终占据 该单元。 一直存在。 动态存储 使用时分配存储 单元,使用完立 即释放。 时而存在时而 消失。 15 自动变量具有以下特点: n作用域仅限于定义该变量的结构内。 n属于动态存储方式。 n不同的个体中(函数或复合语句内)允 许使用同名的自动变量而不会混淆。 (1)自动变量(auto) 16 #include “stdio.h“ main() 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=5 1:x=3 2:x=1 x=1作用域 x=1作用域 x=3作用域 x=5作用域 17 (2)静态变量(static) n静态变量的定义形式为: static 类型说明 变量名,变量名, n在局部变量的类型说明前加上static构 成局部静态变量。例如: static int a,b; static float x; 18 l局部自动变量与局部静态变量对比 存储方式生存期作用域变量的值 局部自 动变量 动态存储 函数被调 用时 函数内 若不赋初 值,其值 不确定。 局部静 态变量 静态存储 整个程序 运行期间 函数内 编译时赋 初值,程 序运行时 已有值。 19 #include “stdio.h“ void f(int a) int j=0; j+; j=a+j; printf(“%dn“,j); main() int i; for(i=1;iy?x:y #include “stdio.h“ main() int a,b,max; scanf(“%d%d“, max=MAX(a,b); printf(“max=%dn“,max); 30 l宏定义中的形参最好括起来,以避免代换时出错。 #define SQR(y) (y)(y) #include “stdio.h“ main() int i; for(i=1;i 例如: #include #include “math.h“ 2、文件包含 32 3、条件编译 略(自学) 6.7 程序举例 自学 33 小 结 n掌握变量作用域的概念,掌握局部变 量和全局变量的概念; n掌握变量存储类别的概念,掌握静态 存储和动态存储的概念; n学会使用#define进行宏定义; n学会使用#include进行文件包含。 34 作 业 P104 三、编程题:3 35 课堂练习#include #define M(x) x+100 int 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“,a); for(i=1;i n #define FUDGE(y) 2.84+y n #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 37 n1、已知i、j、k为int型变量,若从键盘输入: i=1,j=2,k=3,使i的值为1、j的值为2、k的值为3 ,以下选项中正确的输入语句是_。 n A、scanf(“%2d%2d%2d“, n B、scanf(“%d,%d,%d“, n C、scanf(“%d %d %d“, n D、scanf(“i=%d,j=%d,k=%d“, 38 n3、设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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 重难点解析人教版八年级上册物理声现象《声音的产生与传播》综合测试试卷(附答案详解)
- 滚轴筛课件教学课件
- 滇运安安全培训证明课件
- 滁州西课件教学课件
- 海南建筑安全员a证考试题库及答案解析
- 成人健康护理学中册题库及答案解析
- 河北安全员培训试题题库及答案解析
- 港口安全知识培训课件
- 雨雪天气应急预案2023
- 2025年大学《越南语》专业题库- 越南语言文字传统的文化解读
- 叮当快药大健康生态圈战略解析
- 数学评比活动方案
- TCPUMT 034-2025 工业数字孪生 数字模型与数据集成交换要求
- 曹植的故事课件小学生
- 【艾瑞咨询】2024年中国健康管理行业研究报告494mb
- 施工作业安全管理制度
- 2025年房地产经纪人考试题及答案
- 4.3禁止生物武器
- 康复治疗技术专业实训室设计方案
- 塔里木油田分公司新疆塔里木盆地吐孜洛克气田开采矿山地质环境保护与土地复垦方案
- 2025年中国铸钢件铸铁件铸合件项目投资可行性研究报告
评论
0/150
提交评论