- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 函数及函数模板
第5章 函数与函数模板 5.1 函数的定义与声明 在以模块化方式设计一个较大的程序时,需要对复杂功能进行分解,形成若干容易处理和编码的相对独立的程序块,而最终要精心实现的就是这些小而容易的程序块,称为“模块”,C++中称之为函数。 5.1.1 函数定义 type 函数名(形式参数说明表) { //代码,称为函数体 } 上述工作的目的是指规定一个函数的名字、参数等信息,并给出实现它的完整代码,此过程称为“函数定义”或“函数实现”。 5.1.1 函数定义 一个程序中可能包含很多个函数,所有函数无主次之分,单独定义,不能在一个函数的函数体内再定义另一个函数,这一点称为函数的“外部性”。一个完整的程序必须有一个名字为main的函数,它起着程序入口的作用。即程序从main函数的第一条语句开始执行,main函数执行完毕意味着整个程序运行结束。 5.1.2 函数声明 自定义函数的声明 用户定义的函数应按下述两种形式之一进行声明,效果相同: type 函数名(形式参数说明表); type 函数名(形式参数类型说明表); 例如: double f(double x, double y); double f(double, double); 声明是为了说明函数的格式,参数的名字无关紧要。 在函数定义置于使用之前时也可以不声明,但一般只在简单程序中采取这种做法。 5.1.2 函数声明 库函数的声明 C++语言的库函数是预先设计的函数,它们的原型声明都分类存储在随系统携带的某个头文件中,需要使用#include指令“包含”对应的文件,使编译器可以查找到所使用函数的声明。 学习时应注意了解库函数和它所在的头文件。 5.2 函数调用与参数匹配 如果仅给出一个函数的定义和声明,并不意味着函数的代码能够被执行。只有程序的其它部分使用该函数时,系统才会真正执行函数的代码,这种使用称为“函数调用”。 5.2.1 调用关系 #include iostream using namespace std; double sum(double, double); //函数原型声明 void print(double); //函数原型声明 int main( ) { print(sum(1.0, 2.0)); } double sum(double x, double y) { return x+y; } void print(double x) { cout x= x endl; } 5.2.2 函数返回控制与函数调用表达式 函数返回控制 当一个函数的代码执行后,有两种情况意味着函数执行完毕并返回到调用函数。 ⑴执行完函数的所有代码; ⑵执行到一个return语句。 return语句有以下两种语法形式: return; return expression; 如果函数中通过“return expression;”形式返回,则函数应该是表达式expression所具有的类型,否则为void类型。 标准C++中的main函数有点特殊,尽管被建议是int类型,但即使没有return语句带回值,也不会得到警告错误。 5.2.2 函数返回控制与函数调用表达式 参数对应 当执行被调用函数的代码时,形参变量的值就等于实参数的值。应保证实参数与形式参数在数量、类型、顺序上的严格匹配。 5.2.2 函数返回控制与函数调用表达式 函数调用表达式 void类型的函数 普通数据类型的函数 返回指针或引用的函数 5.2.2 函数返回控制与函数调用表达式 参数的默认值 对于一些常用的实参数值,可以说明为默认值(缺省值),如果调用时没有给出实参数则使用声明或定义中的默认值做实参数。 void printImage(int r=3, int c=4, char cx=’*’); printImage( ); //3×4的*图形 printImage(4); //4×4的*图形 在不能为所有参数指定默认值时,必须按由右至左的顺序提供默认值。同时有定义、声明时,要在声明中指定缺省值而不是在定义中,否则会引起语法错误。 5.2.2 函数返回控制与函数调用表达式 参数的计算顺序 实参数表达式先按由右至左的顺序被计算出值,然后再逐个复制给形式参数。 例如: void outdata(int x, int y) { cout x , y endl; } 注意:实际参数的计算次序与数据的输出次序是不同的含义。 5.3 参数的传递方式 C++的函数参数有2种传递方式 传值和引用,传值又可以细分为传递普通数据和指针。 5.3.1 普通传值方式 以传值规则处理参数会导致一个明显的结论:
文档评论(0)