《C++程序设计》第5章函数.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 5 函 数 本章导读 函数的定义和调用 内联函数 函数重载 标识符作用域 存储类型 递归函数 5.1.1 函数定义 类型 函数名(参数列表) { //函数体 … } 5.1 函数的定义和调用 类型指函数返回值的数据类型,函数名采用标示符,一对()内是参数列表,一对{}内是函数体,由一组语句组成,完成函数具体功能的实现。 函数值的返回通常是运行结果或状态值。返回采用return 语句,例如: return 0; return xy?x:y; return 后面跟表达式。 返回值的类型也可以是void类型,这种情况下可以写成:return; 也可以省略返回语句。 函数的执行是由函数的调用来完成的。 C++程序通过main()函数直接或间接调用其它函数。函数被调用时获得程序控制权,调用完成后,返回调用处执行后面的语句。 函数调用的形式如下: 函数名(实参列表) 以上函数调用的形式可以出现在表达式中,也可以作为一条单独的调用语句来使用。例如: s= sum(100)+sum(200); //出现在表达式 PrintError(2); //调用语句 参数从调用的角度分为实际参数和形式参数,或简称为实参和形参。实参和形参是一一对应的关系,参数的个数和类型都必须一致。如果类型不一致将自动转换,不能自动转换的将在编译或运行时出错。 5.1.2 函数调用 #include iostream #include cstring using namespace std;? int fact(int n) { int f=1; for(int i=1 ; i = n ; i++) f = f * i; return f; }? int main() { int s; s = fact(5) +fact(6) +fact(7); cout5!+6!+7!=sendl;? return 0; } 【例5.1】演示函数的定义和调用 主函数三次调用fact函数,fact函数完成n的阶乘的计算并返回计算结果。5、6、7是实参,fact函数中的n是形参。 形参是在所在函数被调用时才分配存储单元,调用完成后被立即释放。以上程序中的形参n就是被3次分配,3次释放。 实参和形参各自分配独立的存储单元,实参可以是常量、变量和表达式,而形参必须是变量。 实参向形参的参数传递有三种形式:值传递、引用传递和地址传递。 值传递和地址传递要求形参必须是变量,引用传递的形参是实参的别名。 值传递是单向的数据传递,传递完成后,对形参的任何操作都不会影响实参。 地址传递也可以说是单向的数据传递,但这种数据往往是变量、结构体、对象等的地址,对形参的操作会直接影响实参,从而使得这种形式上的“单向”数据传递变成“双向”的。地址传递又称为指针传递,在后面的指针章节中将详细介绍。 引用传递的形参是实参的替代名称,形参的样式如: int a,int b。由于是别名,所以对形参的操作和对实参的操作是一样的。 5.1.2 函数调用 #include iostream #include cstring using namespace std;? void swap1(int a,int b) { int t; t=a; a=b; b=t; couta,b=a,bendl; } void swap2(int a,int b) { int t; t=a; a=b; b=t; couta,b=a,bendl; } int sum(int x[10]) { int s=0; for(int i=0 ; i10 ; i++) { x[i] = x[i]+ 1; s = s + x[i];} return s; } 【例5.2】演示函数的参数传递 int main() { int x=10,y=20; swap1(x,y); //值传递 coutx,y=x,yendl;? swap2(x,y); //引用传递 coutx,y=x,yendl;? int a[10] = {1,2,3,4,5,6,7,8,9,10}; int s = 0;? for(int i = 0 ; i 10 ; i++) s = s + a[i]; cout调用前数组a的元素和为:sendl; s=0; sum(a); //地址传递 for(i = 0 ; i 10 ; i++) s = s + a[i]; cout调用后数组a的元素和为:sendl; ?return

文档评论(0)

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

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

1亿VIP精品文档

相关文档