- 1、本文档共151页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序设计课程介绍-第6章过程封装--函数参考
第6章 过程封装--函数 函数 自己编写函数 函数的使用 数组作为参数 带默认值的函数 内联函数 函数的用途 函数是程序设计语言中最重要的部分,是模块化设计的主要工具。每一个C++程序都要用到函数。 即使你自己不定义新的函数, 在每一个完整的C++程序中都必须有一个main() 函数。 在C++语言中,字符处理、字符串处理和数学计算都是用函数的方式提供的。 函数的例子 我们可以将像sin那样的函数想象成一个黑盒子,或一个小机器。如果你在它的上面放入一个“值”,在它的下面就会掉出“结果” 上面的值称为参数,下面的值称为返回值 调用函数的一个例子 如果我们改变了输入的参数,函数就能返回不同的值。 函数的参数可以是常数、变量或表达式。 图中我们将调用4次sin的结果加起来,并将其和存入变量total中。 第6章 过程封装--函数 函数 自己编写函数 函数的使用 数组作为参数 带默认值的函数 内联函数 如何写一个函数 函数定义 函数的返回值:返回值类型应与定义中的类型标识符一致 表示一个函数没有返回值,类型标识符用void。没有返回值的函数也称为过程 函数举例—无参数、无返回值的函数 打印一个由五行组成的三角形 函数举例—有参数、无返回值的函数 打印一个由n行组成的三角形 函数举例—有参数、有返回值的函数 计算n! 函数举例—返回布尔量的函数 判断某一年是否为润年的函数 第6章 过程封装--函数 函数 自己编写函数 函数的使用 数组作为参数 带默认值的函数 内联函数 函数的声明 所有函数在使用前必须被声明,以便让编译器知道用户的用法是否正确。 函数声明包括下列内容: 函数名 函数的参数类型 函数的返回类型 函数的声明被称为函数的原型,它的形式为: 返回类型 函数名(参数表); 参数表中的每个参数说明可以是类型,也可以是类型后面再接一个参数名。如: int max(int, int); int max(int a, int b); 函数说明规则 库函数在调用前需要#include相应的头文件。 自定义的函数在调用时需要进行函数原型说明。 函数原型说明与函数首部写法上需要保持一致,即函数类型、函数名、参数个数和参数顺序必须相同。 如果被调函数的定义在主调函数之前,可以不必加声明。 如果在所有函数定义之前,在函数外部已经做了函数声明,则在主调函数中无须再作声明。 函数调用 函数调用 函数调用 函数调用形式 函数名(实际参数表) eg. max( x, y); 注意: 形式参数和实际参数的个数、排列次序、类型要完全相同。 实际参数可以是常量、变量、表达式,甚至是另一个函数调用 传递方式:值传递 值传递:函数获得了主调程序参数变量值的拷贝。被调程序可以改变这些拷贝,但这对主调程序的环境没有影响。 函数调用 调用方式 函数执行过程 在主程序中计算每个实际参数值 将实际参数赋给对应的形式参数。在赋值的过程中完成自动类型转换。 依次执行函数体的每个语句,直到遇见return语句或函数体结束 计算return后面的表达式的值,如果表达式的值与函数的返回类型不一致,则完成类型的转换。 用函数的返回值置换函数调用,继续主程序的执行 函数执行过程 第6章 过程封装--函数 函数 自己编写函数 函数的使用 数组作为参数 带默认值的函数 内联函数 数组作为函数的参数 设一程序有下列要求: 读入一组数据到一数组,直到输入为0为止 将数组的元素倒过来排 显示数组元素 问题一的解决方案 在main函数中定义一个足够大的数组。不管GetIntegerArray 中输入多少数据都不会下标超界 定义一个变量,指出数组中真正有多少元素。这样在PrintIntegerArray 和ReverseIntegerArray 函数中可以根据这个值进行操作。因此,要增加一个整型的形式参数 问题二的解决方案数组参数的传递机制 C++语言规定,数组作为参数传递时,传递的是数组元素的首地址。当用实际参数 list 调用函数 GerIntegerArray 时,是把 list 的首地址作为形式参数数组的首地址。如 list 的首地址为1000,在函数中 形参数组的首地址也为1000。因此在函数中对形参数组 的修改就是对数组list 的修改。 函数原型的确定 PrintIntegerArray 和ReverseIntegerArray 需要知道哪一个数组和数组里有多少元素。而GetIntegerArray 需要知道哪一个数组、允许输入的最大元素个数,以及输入结束字符。该函数执行结束后应能返回有效的数据个数。 数组传递本质上传递的是数组的起始地址,真正的元素个数是通过另
文档评论(0)