《C语言程序设计》第6章函数.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
函数是C语言程序的基本模块,由于采用了函数模块式的结构,C语言易于实现结构化程序设计,使程序的结构清晰、减少重复编写程序的工作量、提高程序的可读性和可维护性。 6.1 函数概述 如果软件可划分为可独立命名和编程的部件,则每个部件称为一个模块。 模块化就是把系统划分成若干个模块,每个模块完成一个子功能,把这些模块集中起来组成一个整体,从而完成指定的功能,满足问题的要求。 6.1.2 函数的概念 根据模块化设计的原则,一个较大的程序一般应分为若干个程序模块,每一个模块用于实现一个特定的功能。 在不同的程序设计语言中,模块实现的方式有所不同。在C语言中,模块用函数来实现。 在C语言中,函数分为以下两种: (1)标准库函数 这种函数用户不必定义,但可直接使用。例如scanf()、 printf()、fabs()、sprt()、exp()、sin()、cos()等都是C语言中常用的库函数。 (2)用户自己定义的函数 这种函数用以解决用户的专门问题,一般由用户自己编写。 6.2.2 函数的参数和返回值 函数的参数分为形式参数和实际参数两种。 形式参数(形参):函数定义时设定的参数。 实际参数(实参):调用函数时所使用的实际的参数。 形参和实参的功能是进行数据传递。 发生函数调用时,主调函数把实参的值传递给被调函数的形参,从而实现主调函数向被调函数的数据传递。 C语言可以从函数(被调用函数)返回值给调用函数(这与数学函数相当类似)。 在函数内是通过return语句返回值的。 使用return语句能够返回一个值或不返回值(此时函数类型是void)。 return语句的格式为: return [表达式];或return(表达式); 6.2.3 函数的声明 函数定义的位置可以在调用它的函数之前,也可以在调用它的函数之后,甚至可位于其他的源程序模块中。 若函数定义位置在前,函数调用在后,不必声明,编译程序产生正确的调用格式。 若函数定义在调用它的函数之后或者函数在其他源程序模块中,且函数类型不是整型,这时,为了使编译程序产生正确的调用格式,可以在函数使用前对函数进行声明。 函数声明的格式为: 函数类型 函数名([形式参数表]); .h文件内许多都是函数声明,当源程序要使用库函数时,就应当包含相应的头文件。 6.3 函数的调用 一个函数调用另一个函数称为函数调用,其调用者称为主调函数,被调用者称为被调函数。 6.3.4 函数的递归调用 一个函数在它的函数体内调用它自身的过程称为递归调用,递归调用表现为直接调用自己或间接调用自己两种方式,也就是一个函数的执行过程中出现直接或间接调用该函数自身的行为。 前者称为直接递归调用,后者称为间接递归调用。这种函数称为递归函数。 6.6 编译预处理 编译预处理是在编译前对源程序进行的一些预处理。 预处理由编译系统中的预处理程序按源程序中的预处理命令进行。 C语言的预处理命令均以“#”打头,末尾不加分号,以区别于C语句。 它们可以出现在程序中的任何位置,其作用域是自出现点到所在源程序的末尾。 6.6.1 宏定义 在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。 被定义为“宏”的标识符称为“宏名”。 在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。 宏定义是由源程序中的宏定义命令完成的,宏代换是由预处理程序自动完成的。 在C语言中,“宏”分为有参数和无参数两种。 宏定义 1.无参宏定义 无参宏的宏名后不带参数。其定义的一般形式为: #define 宏名 字符串 其中,作为宏名的标识符习惯上用有意义且易理解的大写字母来表示,“字符串”可以是常数、表达式或格式串等。 宏定义一般写在文件开头函数体的外面,有效范围是从定义宏命令之后到遇到终止宏定义命令#undef为止,否则其作用域将一直到源文件结束。 对于宏定义还要说明以下几点: (1)宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现。 (2)如果在一行中写不下整个宏定义,需要用两行或更多行来书写时,只需在每行的最后一个字符的后面加上反斜杆“\”,并在下一行的最开始接着写即可。 (3)宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。 (4)宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换。 (5)宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名。在宏展开时由预处理程序层层代换。 带参宏定义 C语言允许宏带有参数。 在宏定义中

文档评论(0)

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

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

1亿VIP精品文档

相关文档