06第6章 函数.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
06第6章 函数

* * ?C中的函数定义是互相独立的,函数和函数之间没有从属关系,一个函数既可以被其它函数调用,也可以调用别的函数,这就是嵌套调用。 main() { 调用f1() } f1() { 调用f2() } f2() { } 6.3 函数的嵌套调用 嵌套调用举例 【例6.4】简单的嵌套调用函数。 #include “stdio.h” int fun1(int a,int b)/*定义fun1函数*/ { int fun2(int,int); /*函数fun2原型说明*/ int c; a+=a; b+=b; c=fun2(a,b); /*调用fun2函数*/ return c*c; } int fun2(int a,int b) /*定义fun2函数*/ { int c; c=a*b%3; return c; } void main() { int x=11,y=19; printf(“%d\n”,fun1(x,y)); /*调用fun1函数*/ } 6.4 函数的递归调用 递归是指同类问题在解决中规模不断缩小,直至问题可以解决。 在C中,如果一个函数直接或者间接调用自己就叫递归调用。递归调用是嵌套调用的特例,是程序设计中常用的方法之一。 递归是一种重要的程序设计思想,在编程界有许多基于递归的经典算法。 递归调用 【例6.5】用递归的方法求表达式n! 递归公式为: 1 (n=0,1)(递归的终点) n!=n (n-1)! (n1) (递归调用) 递归调用 【例6.5】用递归的方法求表达式n! #include “stdio.h” long fact(int n); void main() { int n; long y; printf(“请输入一个正整数:”); scanf(“%d”,n); y=fact(n); printf(“%d!=%ld \n”,n,y); } long fact(int n) { long f; if(n0) printf(“n0 数据错误 !”); else if(n==0) f=1; /*递归的终点*/ else f=fact(n-1)*n; /*递归调用*/ return f; } “递”的过程 “归”的过程 6.5 局部变量和全局变量 局部变量:在函数体内或复合语句中定义的变量都是局部变量,局部变量的作用范围只在其所定义的函数体内或复合语句中。函数的形参皆为局部变量。 全局变量:函数体外定义的变量时全局变量。作用域从它定义的位置开始到本源文件结束。 变量的作用域就是变量在源程序代码中的可用范围,作用域根据变量的定义位置区分为局部变量和全局变量两种。 问题:通过5次函数调用输出1到5的阶乘值。 分析:1!=1, 2!=1!*2, 3!=2!*3, …, int fact(int x) { static int t=1; t=t*x; return t;} #include “stdio.h” main() {int i; for(i=1;i=5;i++)   printf(“%d!=%d\n”,i,fact(i));} 运行结果: 1!=1 2!=2 3!=6 4!=24 5!=120 引例 利用静态变量可以保存上次调用结果 程序代码区 静态存储区 动态存储区 存放可执行程序的机器指令 存放需要占用固定存储单元的变量 存放不需要占用固定存储单元的变量 C语言程序所占用的存储空间分为三部分: 全局变量或静态变量存放在静态存储区中,直到整个程序运行结束时才释放存储单元;局部变量或自动变量存放在动态存储区中,函数调用结束时就释放存储单元。 C语言的内存空间 6.5 局部变量和全局变量 6.6 变量的完整定义 变量的完整定义形式为:  存储类型说明符 数据类型说明符 变量名表 定义变量时要说明变量的数据类型和存储类型。存储类型确定变量的存储方式、生存期和作用域。 生存期:指变量占用存储空间的时限。按变量的生存期可以把变量分为静态变量和动态变量。 如:static int i,j; extern float x 等 局部变量的存储有: auto:临时性存储,其存储空间可以被若干变量多次覆盖使用。 register:存放在CPU的通用寄存器中,目的是提高执行速度。long,double,float不能设为register型,因为超过寄存器长度。 static:存放在静态存储区域中,生存期长。 6.6.2 局部变量的存储类型 #include “stdio.h” void test_auto() {int va=

文档评论(0)

xxj1658888 + 关注
实名认证
文档贡献者

教师资格证持证人

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

领域认证该用户于2024年04月12日上传了教师资格证

1亿VIP精品文档

相关文档