第08章_函数讲解.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;C程序是由函数构成的。 其中main()为主函数,其它皆为子函数。 总是先执行main()函数。 子函数在被调用时执行。 每个子函数是独立的。 这使得程序容易实现模块化。;§8.1概述 ; 说明: (1)一个C程序由一个或多个源程序文件组成。对较大的程序,一般不希望把所有内容全放在一个文件中,而是将他们分别放在若干个源文件中,再由若干源程序文件组成一个C程序。这样便于分别编写、分别编译,提高调试效率。一个源程序文件可以为多个C程序公用。;(2) 一个源程序文件由一个或多个函数以及其他有关内容(如数据定义等)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的,而不是以函数为单位进行编译的。 ;(4) 所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。main函数是系统调用的。 ;(6) 从函数的形式看,函数分两类: ①无参函数:如例8.1中的printstar和print_message就是无参函数。在调用无参函数时,主调函数不向被调用函数传递数据。无参函数一般用来执行指定的一组操作。例如,例8.1程序中的printstar函数。 ②有参函数: 在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据,一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。 ;§8.2函数定义的一般形式 ;§8.2.2. 有参函数定义的一般形式 ;§8.2.3 空函数 ;§8.3函数参数和函数的值 ;主调函数→被调用函数 可以使用的方法: 通过函数参数传递 通过指针间接访问 通过全局变量;关于形参与实参的说明:;(3) 在被定义的函数时,必须指定形参的类型。;(5) 在C语言中,实参向对形参的数据传递是“值传递”,单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。 ;§8.3.2 函数的返回值;return语句不是必须的,如果需要从被调用函数带回一个函数值供主调函数使用,被调用函数中必须包含return语句。如果不需要从被调用函数带回函数值可以不要return语句。 ;return后面的值可以是一个表达式。 例如,例8.2中的函数max可以改写成: int max(int x,int y) {  return(x>y?x∶y); };例如:下面是3个函数的首行: int max(float x,float y) /* 函数值为整型 */ char letter(char c1,char c2) /* 函数值为字符型 */ double min(int x,int y) /* 函数值为双精度型 */;如果函数的类型和return语句中表达式的值不一致,则以函数类型为准, 对数据自动进行类型转换。即函数类型决定返回值的类型。 ;§8.4 函数的调用 ;如果实参表列包括多个实参,对实参求值的顺序并不是确定的,有的系统按自左至右顺序求实参的值,有的系统则按自右至左顺序。许多C版本是按自右而左的顺序求值,例如Tubro C++。 例: p=f(i,++i); ;§8.4.2函数调用的方式;3.函数参数 函数调用作为一个函数的实参。例如: m = max (a , max ( b , c ) ) ; 其中max ( b , c )是一次函数调用,它的返回值作为另一次max调用的实参。 函数调用作为函数的参数,实质上也是函数表达式形式调用的一种,因为函数的参数本来就要求是表达式形式。;§8.4.3对被调用函数的声明和函数原型;(3) 如果使用用户自己定义的函数,应该在调用前对被调用的函数作声明。;函数原型的一般形式为 (1) 函数类型 函数名(参数类型1,参数类型2……); 例:max(int,int); (2) 函数类型 函数名(参数类型1,参数名1,参数类型2,参数名2……); 例:max(int x,int y); ;“声明”一词的原文是delaration。声明的作用是把函数名、函数参数的个数和参数类型等信息通知编译系统,以便在遇到函数调用时,编译系统能正确识别函数并检查调用是否合法。 (例如函数名是否正确,实参与形参的类型和个数是否一致)。 ;如果 被调用函数的定义出现在主调函数之前,可以不必加以声明。因为编译系统已经先知道了已定义函数的有关情况,会根据函数首部提供的信息对函数的调用作正确性检查。 ;§8.5 函数的嵌套调用;main() { f1(); //调用f1函数 };§8.6函数的递归调用 ;例 8.8用递归方法求n! ;float fac(int n) { float

文档评论(0)

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

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

1亿VIP精品文档

相关文档