chap05_函数的基本知识的(二).ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap05_函数的基本知识的(二)

5.6 变量的作用域与存储类型 “变量”的两个问题: 第一、每一个变量在什么范围内起作用(变量的作用域问题) 第二、每一个变量何时生成、何时消失,在程序中能存在多久(变量的生命周期问题) 变量的作用域:指变量在程序中的哪一部分是可见的,是可用的。 变量的生命周期:指变量所占用的空间从创建到撤销的这段时间。 5.6.1 变量的作用域 通俗的说,变量的作用域就是变量起作用的地方。 与变量定义位置有关: 定义位置:函数体外、函数体内、函数的语句块内(一对花括号内) 根据作用域可以分为两类: 局部变量: 外部变量(全局变量) 举例:P85例5.9 注:该例只看观察变量的作用域问题,此例并不实际意义。 内存用户区 * 变量的存储类型 用extern声明外部变量 extern关键字只是用来声明全局变量而不是定义变量的,而其他3个关键字用于变量定义时。 有两种用法 (1)如果在同一个文件中,要访问后定义的全局变量,则需要在前面位置作外部变量声明; (2)如果程序由多个文件组成,某文件中需要访问另一个文件中定义的全局变量,则一定要通过此语句在需要访问的文件中作外部变量声明。 声明变量,不需要为变量分配内存空间 int max(int x, int y) { int z; z=xy ? x:y; return(z); } main( ) { extern int A,B; printf(“%d”,max(A,B)); } int A=13,B=-8; 运行结果: 13 * 变量的存储类型 用register定义寄存器变量 寄存器是CPU内部的一种容量有限但速度极快的存储器。寄存器变量就是用寄存器存储的变量,寄存器变量的定义格式为: register变量类型名 变量名1 [ , 变量名2 , ......变量名n ] ; 将一些简单而频繁使用的自动局部变量放到CPU的寄存器中,则访问变量的速度与指令执行速度同步 寄存器变量所占字节数不能太多,故只限于int, char, short , unsigned和指针类型的变量可为寄存器变量,可自动优化,一般无需要作此定义 * 5.7 应用举例——二次项定理求值 一个大型的复杂的程序,按自顶向下、逐步细化、模块化的结构化程序设计方法设计,对每一个功能用相应的函数实现。某些复杂功能将会被分解为若干简单功能组成,从而需要调用多个函数 在程序设计时,每一个函数的功能力求简单清晰,代码量较少,可读性强。整个程序通过函数之间的调用及流程控制共同完成整个程序的功能。 用数学中的二项式定理求(a+b)n 程序共分三个层次六个函数,具体见编程环境下的演示 声明变量,不需要为变量分配内存空间 作业 1、课程网站编程题13(11月20日关闭) 2、本章课本习题: 3、本章补充习题: 注:单选题第7题答案有错误 4、实验4 * * * * * * * * * * * * * * * * 递归:在函数调用过程中,直接或间接的调用自身。 递归调用方式有两种 直接递归调用:在函数体内又调用自身 f( ) 调f int f(int x) { int y,z; …… z=f(y); ……. return(2*z); } 5.5 函数的递归 间接递归调用:当函数1去调用另一函数2时,而另一函数2反过来又调用函数1自身。 调f2 调f1 f1( ) f2( ) int f1(int x) { int y,z; …… z=f2(y); ……. return(2*z); } int f2(int t) { int a,c; …… c=f1(a); ……. return(3+c); } 递归本身是无终止的,解决无终止递归调用的方法是:确定好结束递归的条件。 条件成立,进行递归 用if语句控制 条件不成立,结束递归 简单的例子: 有5个人,第5个人比第4个人大2岁,第4个人比第3个人大2岁,……第2个人比第1个人大2岁,第1个人10岁,问第5个人多大? age(5) age(4) age(3) age(2) age(1) =2+age(4) =2+age(3) =2+age(2) =2+age(1)

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档