C程序课件chap8.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文档。上传文档
查看更多
C程序课件chap8

第8章 函数 一、函数的引入 二、C语言函数定义的两种形式 形式1: 类型名 函数名(类型名 形参1,类型名,形参2,……,类型名 形参n) { 说明语句; 执行语句; } 形式2: 类型名 函数名(形式参数表) 形式参数说明; { 说明语句; 执行语句; } 例如:int max(int x, int y) 等价于:int max(x,y) int x,y; 几点重要说明 函数的定义在程序中都是平行的,即不允许在一个函数的内部再定义另一个函数 函数名是用户自定义标识符,当函数值为整型时类型名可省略,当函数只完成某个操作而不返回值时,可用类型名void 形参表中的形参是用户自定义标识符,没有参数时,圆括号不能省略,函数为无参函数 三、函数的参数 几个定义 函数调用 调用函数 被调函数 形式参数(形参) 实际参数(实参) 说明 形参在定义时不占内存空间,只在调用函数时为其分配存储单元,且在调用结束后释放内存空间 实参可以是常量、变量、表达式,但必须预先有确定值 实参变量与形参变量发生“单向值传递”,但当数组名作为实参进行传递时,传递的是数组的首地址 四、函数的返回值 格式: return(表达式); 或 return 表达式; 说明 一个函数中可以有多个return语句;当执行到某个return语句时,程序的控制流程返回到调用函数中,并将return语句中表达式的值作为函数值带回 若没有return,就一直执行到函数体末尾,返回函数时,带回一个不确定值。所以若不带回函数值,应将函数定义为void类型 return语句中表达式的类型应与函数值类型一致。若不一致时,则以函数值的类型为准,并由系统按赋值兼容的原则进行处理 五、函数调用 格式 函数名(实参表); 说明 实参表中,实参个数多于一个时,各参数之间用逗号分隔,实参个数、类型必须与对应的形参一致 无参函数在调用时,没有参数传递,但圆括号不能省略 两种方式调用函数 作为表达式出现在任何允许表达式出现的地方参与运算,此种调用只能用于函数有返回值的情况。 如:c=2*max(a,b); 作为一条独立的语句进行函数调用,此种调用多用于函数没有返回值的情况,即函数类型为void类型。 如:printstar( ); 调用函数与被调用函数的相对位置关系 先定义,后调用 若被调函数的定义在调用函数之后出现,必须在调用函数中对被调函数加以说明,int、char型函数除外 格式:类型名 被调用函数名( ); 函数的调用可以嵌套 函数的调用可以递归 参数传递的两种方式 传值调用:函数调用时,实参的值一一对应的传递给形参,且发生“单向值传递”。即使形参发生了值的变化也不会影响实参。 六、函数的嵌套调用 嵌套调用定义:在一个函数的内部调用另一个函数 七、函数的递归调用 定义:在调用一个函数的过程中又直接或间接调用该函数本身 分析递归实例 求n! 分析: 数学公式可转化为 执行过程 每次调用自己,保留上次的变量值,重新分配内存给这一次的变量 每次调用自己后,保留上次的执行程序 逐层返回 使用注意 一个问题转化为一个新问题,新问题的解法必须与旧问题一致,处理对象是规律性的递增或递减 必须有一个明确的结束条件,即递归出口,否则出现无限递归 八、数组作为函数参数进行传递 数组元素作为函数参数 分析:与普通变量作为函数参数进行传递没有区别,发生单向值传递 数组名作为函数参数 例1:求10个学生成绩的平均分,10个成绩用数组存放 分析:求10个数的平均分,不能引入10个形式参数,所以考虑用数组名作为函数参数进行传递,传递数组的首地址 double average(double b[10]) { int i; double aver,sum=0; for (i=0;i10;i++) sum+=b[i]; aver=sum/10; return(aver); } 分析: 改进: 引入一个参数用来传递数组元素个数 九、变量的存储类型 全局变量与局部变量 定义: 局部变量:函数内部定义的变量(包括main函数内部定义的变量) 全局变量:函数外部定义的变量 作用域: 全局变量作用域从定义处到文件尾 局部变量作用域就是本函数内部 如果全局变量与局部变量重名,则以局部为主 ? #include stdio.h void main( ) { int a,b,c; scanf(“%d%d”,a,b); c=

文档评论(0)

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

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

1亿VIP精品文档

相关文档