欢迎来到天天文库
浏览记录
ID:43805121
大小:206.50 KB
页数:35页
时间:2019-10-14
《第7章 函数——C++的编程模块》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、7.1 复习函数的基本知识 182使用C++函数,必须完成下列工作:提供函数定义提供函数原型调用函数库函数是已经定义和编译好的函数。创建自己的函数时,必须自行处理三个方面-定义,原型声明和调用。程序7.1calling.cpp提供了简单的说明17.1.1 定义函数 183没有返回值的函数:voidfunctionName(paramererList){statement(s)return;//可选}paramererList指定了传递给函数的参数类型和数量。通常使用void函数执行某种操作,如打印等有返回值的函数typeNamefunctionName(paramererList){state
2、ment(s)returnvalue;}value可以是常量、变量或者表达式,结果的类型必须为typeName或可隐式转换为typeName。返回值不能是数组。但可以是其他任何类型,包括指针,结构和对象2函数返回通常,函数通过将返回值复制到指定的CPU寄存器或内存单元中来将其返回。调用程序将查看该内存单元,返回函数和调用函数就该内存单元中的数据类型须达成一致。函数原型声明告诉调用程序返回类型,函数定义命令被调函数返回什么类型的数据。函数返回机制见图7.1如果函数包含多条返回语句,则函数在执行遇到的第一条返回语句后结束。必须为每种函数可能结束位置提供返回。37.1.2 函数原型和函数调用 184
3、程序7.2protos.cpp函数cheers和cube的声明,调用和定义。函数原型描述了函数到编译器的接口。将函数返回值的类型以及参数的类型和数量告诉编译器。doublecube(doublex);//变量名可选原型可以提高效率,是每个调用的函数接口信息都能被掌握。如果调用的实参值类型与目标参数类型不匹配,将会发生从实参到形参的强制类型转换;如果返回值类型和原型期望的返回值类型不一致,也将发生从实际返回值到期望返回值的强制类型转换。须防止类型转换时的错误。编译阶段进行的原型化被称为静态类型检查。47.2 函数参数和按值传递 187用于接收传地址的变量称为形参,传递给函数的值被称为实参。函数调
4、用时,将在形参的位置创建一个新的变量,其值是实参的拷贝(或类型转换后的结果)。此种方式称为按值传递。如图7.2所示函数形参处产生的变量及函数中声明的变量属于函数所有,称局部变量,有效性限于函数内部。如图7.3所示57.2.1 多个参数 188函数的两个参数类型相同,必须分别制定每个参数的类型,而不能像声明常规变量一样,将声明组合在一起;原型的变量名可以省略,也不需要和定义的相同。程序7.3twoarg.cppn_chars()接受两个参数67.2.2 另外一个接受两个参数的函数 189程序7.4lotto.cpp计算51选6,为了防止中间结果超出最大允许值,可以交替进行乘除运算函数中的局部变量
5、包括两种:形参和其他局部变量。形参从调用函数那里获得值,而其他变量在函数内获得值。77.3 函数和数组 191调用时,将数组传递给函数需要传递数组名和数组长度声明和定义的位置,使用的并不是数组,而是指针程序7.5arrfun1.cpp数组参数的初步使用数组名表示数组首元素的起始地址,数组名和指针在很多时候意义相同87.3.1 函数如何使用指针来处理数组 192函数头intsum_arr(int*arr,intn),用于函数头时int*arr与intarr[]意义相同,都表示一个指针,数组表示法提示用户数据是个数组。指针指向数组时,采用arr[],指向一个独立的值时,采用*arr记住:很多时候i
6、nt*arr与intarr[]意义并不相同。比如数组声明的时候,指针声明的时候97.3.2 将数组作为参数意味着什么 192将数组的位置(首地址),包含元素的类型,元素数目提交给函数。传递常规变量,函数使用的是变量的拷贝;传递数组,函数将访问原来数组的内容。函数只是保留了一个指向同一个数据区的指针拷贝。将数组地址作为参数可以节省复制整个数组的时间和内存。但是,直接访问同一数组数据将增加破坏原始数据的风险。程序7.6arrfun2.cpp注意sizeof运算符的结果;另外传递的地址可以不是数组的起始地址,可以是第n个元素,元素数目也不一定是数组长度107.3.3 更多数组函数范例 194程序7.
7、7arrfunc3.cpp函数fill_array负责填充数组值,每个值都是输入,用while循环保证每个值的有效性函数show_array显示每个数组元素函数revalue改变数组元素的值使用数组作参数,调用函数和被调函数访问的是同一片数据,因此被调函数修改了调用函数声明的数组值。11const保护数组如果有的函数不需要修改数组内容,仅仅是读取,则可以加上关键字const,防止在此函数内对数组元
此文档下载收益归作者所有