- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第9章 函数的使用 我们在前面编写的程序实例中基本上只有一个main函数,没有其他函数。而在实际应用中,在比较大的程序中,通常包含比较复杂的逻辑和功能,这些功能包含若干子功能,子功能可能分解出更小的子功能。这些功能组合在一起,才能形成完整的程序。在C++语言中,上述的这些功能模块是由函数来实现的。所谓函数就是一段可以实现某种功能的程序;这段程序相对独立,具有自己的输入和输出,可以被重复调用,类似一个“黑匣子”。 第9章 函数的使用 9.1 函数的概念 在C++中,可以将一段经常需要使用的代码封装起来,在需要使用时可以直接调用,这就是程序中的函数。我们可以将函数看作是程序员自己定义的操作。与内置操作符相同的是每个函数都会实现一系列的计算,然后形成一个计算结果。与操作符不同的是,函数有自己的函数名,而且函数的操作数是没有数量限制的。函数也是可以重载的,所以这意味着同样的函数名可以对应多个不同的函数,实现更加多元化的功能。 9.2 函数的声明 函数必须首先声明然后使用,正如变量必须首先声明然后使用一样。函数的声明也可以和函数的定义相分离,一个函数可以声明多次,但是只能定义一次。 当函数体的定义都是位于main函数之前时,可以顺利进行编译。但如果将函数定义部分放到函数调用语句之后时编译是否可以进行呢?严格来说,这样的编译过程应该不能通过。我们可以分析编译器的编译过程。编译器编译一个C++源文件时,采取从前向后的顺序进行。如果函数定义在前,那么编译器处理完函数定义部分后,自然了解了该函数的参数类型、个数和返回值等信息,那么后续的代码中遇到该函数的调用,编译器自然可以轻松处理;反之,编译器遇到一个函数的调用,但尚未编译该函数的定义,对该函数“一无所知”,那么编译器可能就会报错。 9.3 函数的定义 函数是由函数名以及一组操作数表示的。函数的操作数也可以称为是形参,在一对圆括号中声明的,形参与形参之间可以用逗号分割开。函数所执行的实现功能的运算是在一个称为函数体的块语句中定义的。每一个函数都有一个返回类型。我们在编写程序过程中会遇到无参函数和有参函数等类型,它们的定义相互之间是有一定的区别的。 9.3.1 不同函数类型的定义形式 无参函数很明显就是一种没有参数的函数,定义无参函数的一般形式如下: 函数返回值类型 函数名( ) { 定义部分 语句部分 } 9.3.2 函数的返回值 函数的返回值是通过函数中的return语句获得的,return语句将被调用函数中的一个确定值带回到主调函数之中去,而如果需要从被调用函数中带回一个函数值供主调函数使用,则在函数定义体中必须要包含return语句。一个函数中可以包含多个return语句,执行到哪个语句哪个起作用。return语句的后面可以是一个值也可以是可以得出值的表达式。例如: int get_bigger(int a,int b){ return(xy?x:y); } 9.3.3 函数的形参表 形参表是一系列用逗号分隔的参数类型和参数名组成的,如果两个参数具有相同的类型,其类型也必须重复进行声明。 int get_bigger(int a,int b,int c); //正确的用法 int get_bigger(int a,b,c); //错误的用法 函数的形参表可以是空的,没有形参的函数可以用空的形参表或者在形参表中写上void来表示。下面的两种表示是相同的: void print_now(); void print_now(void); 9.4 函数的参数传递 每次调用函数的时候,都会重新创建被调用函数所有的形参,这个时候主调函数的位置传递的实参就会重新初始化被调用函数所有对应的形参。注意如果形参是非引用类型,则复制实参的值,如果形参为引用类型则它只是实参的别名,并不会赋值实参的值。有关概念将会在下面的章节中讲解。 9.4.1 形式参数与实际参数 在有参函数中,在调用函数的时候,主调函数和被调用函数之间有数据传递关系。在定义函数的时候函数名后面括号中的变量名称为形式参数,也就是形参;在主调函数中调用一个函数的时候,函数名后面括号中的参数称为实际参数,也就是实参。 9.4.2 非引用形参 在C++中实参向形参的数据传递是值传递。在调用函数的时候,才会给形参分配存储单元,并将实参对应的值传递给形参,调用结束后形参单元才会被释放,而实参单元仍保留并维持原值。 9.4.3 引用形参 在上一节中我们学习了一种函数中的普通的参数传递情况,这种情况下改变形参是不能影响实参的值的。那么如何实现通过改变形参的值直接改变实参的值的效果呢?这就需要设置引用形参了。 使用引用形参应当注意以下几点: 1.使用const引用形参可以避免复制实参为局部副本 2.传递指向指针的引用 9.5
您可能关注的文档
最近下载
- 第一单元-观察物体(单元测试)-2025-2026学年三年级上册数学人教版.docx VIP
- 处理量6万吨日城市生活污水处理厂初步设计.docx
- 后张法预应力钢绞线理论伸长量分段汇总计算实例和应用.doc VIP
- 老年人防骗知识课件下载.pptx VIP
- 3,5-二氯-2,6-二甲基-4-羟基吡啶的生产工艺.pdf VIP
- 个人征信基础数据库系统数据接口规范第三部分数据校验规则V1.0.doc VIP
- 个人征信基础数据库系统数据接口规范第二部分:数据发布格式.doc VIP
- Unit 2 Bridging Cultures 单元整体教学设计高中英语人教版 选择性必修第二册单元整体教学设计.pdf
- 40-50之间离婚协议书.doc VIP
- 清华大学八字班数学分析1期中 于品(1).pdf VIP
文档评论(0)