- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第六章 Cx51函数
第六章 Cx51函数 6.1 函数的分类 6.2 函数的定义 6.3 函数的调用 6.4 数组、指针作为函数的参数 6.5 局部变量和全局变量 6.6 变量的存储类别 6.7 内部函数和外部函数 6.8 常用库函数 6.1 函数的分类 函数:按给定的任务,把相关语句组织在一起的程序块。 按结构上分:主函数main()、普通函数 按用户使用的角度分:标准库函数、用户自定义函数 按函数的定义形式分:有参函数、无参函数、空函数 按调用时是否有返回值分:有返回值函数、无返回值函数 每个程序必须有且只有一个主函数,但可以有若干个其他函数。程序运行总是从main( )开始,主函数可以调用其他函数,调用完毕后回到主函数,在主函数中结束整个程序的运行。其他函数可以互相调用,但它们不能调用主函数。 函数与函数之间通过传递参数和返回值相联系。 6.2 函数的定义 定义的一般形式: 返回值类型 函数名(形式参数表) 形式参数说明 { 函数体; } 例: int Average(int x, int y) { int result; result = (x + y) / 2; return result; } 说明: 返回值类型可以是基本类型及指针类型,一个函数只能有一个返回值,通过return语句获得。如果不需要返回值,则应该用void定义返回值类型,同时return语句之后不再需要任何表达式。若没有指定返回值类型,默认为整型。 当函数执行到return语句时,就中止函数的执行,返回到调用它的地方。 形式参数表包括了函数所需的全部参数的定义。在没有调用函数时,函数的形式参数和函数内部的变量未被分配内存单元,即它们是不存在的。如果没有参数,则应该用void注明。 函数体由两部分组成:函数内部只能自己使用的变量的定义及函数体其他语句。 C不允许函数嵌套定义。在一个函数中再定义一个函数是非法的。 6.3 函数的调用 (1)函数调用的一般格式: 函数名(实参数表); 有返回值时 放到一个数值表达式中,如c=Average (a,b); 作为另一个函数调用的参数,如 c=Average(Average(a,b),c); printf(%d\n, Average(a,b)); 无返回值时 函数调用表达式,如display(a,b); (2)调用实质: 程序执行流程转向由函数名指定的被调用函数。 实参数一一对应地传递给函数定义中的形参数。 执行函数定义中的函数体。 执行结束,通过return语句将值返回到调用处。 程序执行流程返回调用处。执行后面的语句。 (3)参数说明: 单向值传递:实参→形参,形参不能改变实参 调用函数时,必须提供所有的参数 提供的参数个数、类型、顺序应与定义时相同 双向传递:用指针传递实参地址 (4)对被调函数的说明: 被调函数必须是已经存在的函数 如果程序中使用了库函数,或不在同一个文件中的另外的自定义函数,则应在程序的开头处使用#include语句,将所用的函数信息包括到程序中来 依据被调函数在程序中的位置,决定是否进行函数声明 被调函数定义出现在主调函数之后,在主调函数中,被调函数调用之前应进行声明 被调函数定义出现在主调函数之前,不必进行声明 在所有函数定义之前,在文件的开头处,在函数外部已经说明了函数的类型则在主调函数中不必对所调用的函数再作声明——常用方法 (5)函数的嵌套调用和递归调用: 在被调函数中,又调用了函数----嵌套调用 (6)用函数指针变量调用函数 在 C中,函数名也表示在内存区域的首地址。即函数调用的入口地址。 同样,使用指向函数起始地址的指针变量,也可以把函数作为实参数传递给被调函数。 指向函数的指针简称为函数指针。 定义的一般形式: 类型标识符 (*指针变量名)(形参列表 ); 例如: unsigned long (*p)( ); p=factorial; 调用格式:(*指针变量名)(实参表) 注:一旦定义了一个指向某类函数的指针变量后,这个指针变量就只能指向该类函数,即返回值类型相同,参数的个数、类型、顺序都相同的一类函数,而不能是任意的函数 6.4 数组、指针作为函数的参数 (1)用数组作为函数的参数: 用数组元素作为函数的参数,其用法与变量相同 用数组名作函数参数,则调用函数时,传递的是数组的首地址 注:形参数组可不指定大小,只在定义形参数组时在数组名后跟一个空的方括号。为了方便在被调函数中处理数组元素,可另设一个形参来传递实参数组的大小。 例:求一数组中的最大值。 int max(int array[ ], int n) { int i,a=arra
文档评论(0)