版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、( ( the c language programmingthe 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 内部函数和外部函数内部
3、函数和外部函数6.6 6.6 编译预处理编译预处理6.7 6.7 程序举例程序举例 4n变量作用域:局部变量与全局变量;变量作用域:局部变量与全局变量;n变量存储方式:静态存储与动态存储;变量存储方式:静态存储与动态存储;n变量生存期的概念。变量生存期的概念。n变量作用域与存储方式的概念。变量作用域与存储方式的概念。56.4 6.4 变量作用域与存储方式变量作用域与存储方式1 1、变量的作用域、变量的作用域 变量定义变量定义的三个基的三个基本位置本位置函数内部函数内部局部变量局部变量局部变量局部变量函数的参数函数的参数 形式参数形式参数函数外部函数外部全局变量全局变量全局变量全局变量6#inc
4、lude 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#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;f 1 ( ) ;printf(a=%d,b=%dn,a,b); 输出结果:输出结果:c12a=4,b=12(2 2)全局变量全局变量8n
5、将同一源文件中全局变量的作用域将同一源文件中全局变量的作用域向上扩展。向上扩展。n引用其他源文件中定义的全局变量。引用其他源文件中定义的全局变量。(3)外部变量的使用外部变量的使用声明格式如下:声明格式如下:extern extern 类型说明符类型说明符 外部变量名外部变量名; ;9#include 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对于全
6、局变量有以下几点说明:对于全局变量有以下几点说明:n 全局变量就是外部变量。全局变量就是外部变量。n 同一源文件中,允许全局变量和局部变同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局量同名。在局部变量的作用域内,全局变量不起作用。变量不起作用。n 由于全局变量可在多个函数中使用,因由于全局变量可在多个函数中使用,因而降低了函数的独立性。而降低了函数的独立性。从模块化程序从模块化程序设计的观点来看这是不利的,因此尽量设计的观点来看这是不利的,因此尽量不要使用全局变量。不要使用全局变量。 13#include stdio.hint a=3,b=5;max(int a, int
7、 b)int c;c=ab?a:b;return(c);main()int a=8; printf(max=%d,max(a,b);运行结果:运行结果:max=814n变量定义的完整格式为:变量定义的完整格式为:存储类别存储类别 数据类型数据类型 变量名变量名,变量名变量名,2、变量的存储类别与生命期、变量的存储类别与生命期 存储方式存储方式生命期生命期变量的值变量的值静态存储静态存储编译时分配存储编译时分配存储单元并始终占据单元并始终占据该单元。该单元。一直存在。一直存在。动态存储动态存储使用时分配存储使用时分配存储单元,使用完立单元,使用完立即释放。即释放。时而存在时而时而存在时而消失。消
8、失。15自动变量具有以下特点:自动变量具有以下特点:n作用域仅限于定义该变量的结构内。作用域仅限于定义该变量的结构内。 n属于动态存储方式。属于动态存储方式。 n不同的个体中(函数或复合语句内)允不同的个体中(函数或复合语句内)允许使用同名的自动变量而不会混淆。许使用同名的自动变量而不会混淆。 (1)(1)自动变量自动变量(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
9、: 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 类型说明类型说明 变量名变量名, ,变量名变量名, ,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); 运行结果:运行结果:2
11、3420#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存储方式存储方式作用域作用域全局变量全局变量静态存储静态存储可扩展到其他源程可扩展到其他源程序文件中序文件中全局静态全局静态变量变量静态存储静态存储只能为该源文件内只能为该源文件内的函数公用的函数公用l全局变量与全局静态变量对比全局变量与全局静态变量对比22n变量的值存放在变量的值存放在cpu的寄存器中,使用的寄存器中,使用时不需要访问内存,从而提高了效率。时
12、不需要访问内存,从而提高了效率。寄存器变量只限于寄存器变量只限于整型整型、字符型字符型和和指针型指针型的局部变量。寄存器变量是的局部变量。寄存器变量是动态变量动态变量,而,而且数目有限,一般仅允许说明且数目有限,一般仅允许说明两个两个寄存器寄存器变量。变量。例如:例如:register int d;(3)寄存器变量寄存器变量 (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
13、,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 sqr(y) y y#include stdio.hmain()int i;for(i=1;i=3;i+)printf(%dn,sqr(i+1);结果:结果: 4 9 16结果:结果:35731l所谓所谓“文件包含文件包含”是指将另外的文件是指将另外的文件包含到本文件之
14、中。包含到本文件之中。l文件包含命令的一般形式为:文件包含命令的一般形式为:#include 文件名文件名或或#include 例如:例如:#include #include math.h2、文件包含、文件包含323 3、条件编译、条件编译略(自学)略(自学)6.7 6.7 程序举例程序举例自学自学33小 结n掌握变量作用域的概念掌握变量作用域的概念,掌握局部变掌握局部变量和全局变量的概念;量和全局变量的概念;n掌握变量存储类别的概念掌握变量存储类别的概念,掌握静态掌握静态存储和动态存储的概念;存储和动态存储的概念;n学会使用学会使用#define进行宏定义;进行宏定义;n学会使用学会使用#i
15、nclude进行文件包含。进行文件包含。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,a);for(i=1;i=3;i+)printf(%dn,fun(i); 写程序结果:写程序结果:运行结果:运行结果:a=10246836n3、以下程序的输出结果是、以下程序的输出结果是_。n #include n #define fudge(y) 2.84+yn #d
16、efine 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=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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮采购协议书范本
- 北京市室内装修拆除合同
- 山西省2024八年级物理上册第三章物态变化第5节跨学科实践:探索厨房中的物态变化问题课件新版新人教版
- 肾结石的治疗与护理
- 人教版一年级数学2024版上册期末测评(提优卷一)(含答案)
- 安徽省六安皋城中学2024-2025学年七年级上学期11月期中语文试题(含答案)
- (语文)涪城区2024-2025学年七年级半期教学质量监测试卷
- 全脑开发相关项目投资计划书范本
- 【初中地理】世界主要气候类型第二课时课件-2024-2025学年七年级地理上学期(湘教版2024)
- 苯噻草胺相关行业投资规划报告
- 属地管理课件
- 可行性研究报告编制工作流程
- 塔式起重机安装、使用、拆卸专项方案
- 国家职业技能鉴定命题技术标准
- 鱼我所欲也-复习 完整版课件
- 《安全记心上》优秀(共29张)课件
- 氯乙烯本体聚合制备聚氯乙烯的合成标准工艺
- 重庆市普通中小学课程计划
- 施工工程索赔费用明细表
- 初中语文人教九年级上册《水浒传》武松形象探析教学设计
- 青岛版三年级上册数学 分数的初步认识 课件(共16张ppt)
评论
0/150
提交评论