C函数的高级特性与应用.ppt

  1. 1、本文档共34页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
void main() { int x=1,z=10; float y=1.0; char c=a; print(x); //按规则1自动匹配函数void print(int i) print(y); //按规则2通过内部转换匹配函数void print(double i)因为系统能自动将float转换成double型 print(c); //按规则2通过内部转换匹配函数void print(int i)因为系统能自动将char型转换成int型 print(double(z)); //按规则3匹配void print(double i)因为程序中将实参z强制转换为double型 } * 定义重载函数时的注意事项: (1)重载函数间不能只是函数的返回值不同,应至少在形参的个数、参数类型或参数顺序上有所不同。 如:void myfun(int i) {………………} int myfun(int i) {………………} 这种重载就是错误的。 (2)应使所有的重载函数的功能相同。如果让重载函数完成不同的功能,会破坏程序的可读性。 * 函数嵌套调用 C++语言中函数的定义是平行的、独立的,所以,函数的定义是不能嵌套进行的,但函数的调用可以。嵌套调用即在调用一个函数的过程中,又调用另一函数。 main()函数 { …… 调用a函数 …… } a( )函数 { …… 调用b函数 …… } b( )函数 { …… …… } * 函数的递归调用 函数的递归调用即在函数体内部直接或间接的自己调用自己,即函数嵌套调用的是函数本身 如下面定义求n!的函数。 long fact(long n) { if (n==1) return 1; return fact(n-1)*n; //函数fact调用自身 } fact(3) fact(1) fact(2) 1 2x1 3x2 * 函数递归调用的条件: 递归调用的条件也是我们在定义一个递归函数时应该遵循的原则。 必须有完成函数任务的语句。如:上例求n!中的return 1; 有一个确定是否能避免递归调用的测试条件。如果条件不满足时就递归调用,否则就不再递归调用。 有一个递归调用语句,并且该递归调用语句的参数应该逐渐逼近不满足条件,以致最后断绝递归。 先测试,后递归调用。在递归函数定义中,必须先测试,后递归调用。也就是说,递归是有条件的,满足了条件后,才可以递归。 * 关于递归调用的一点说明: 递归函数都能用非递归函数来代替。 如:求n!的非递归版 long fact(int iNum) { long sum=1; for (int i=iNum;i=1;i--) { sum*=i; } return sum; } * 递归调用的目的是简化程序设计,使程序易读 但递归会增加系统开销,主要表现在会占用CPU时间和栈空间,效率较低 非递归函数虽然效率较高,但比较难编程,相对来说可读性差 鼓励用递归函数实现程序思想 * * * * * * * * * * * * * * * * * * * * * * 函数的高级特性与应用 * 函数与数组的关系 函数与指针的关系 内联函数 函数的缺省参数 函数重载的概念 函数的嵌套调用 函数的递归调用 * 函数与数组 数组元素和数组名都可以作为函数的参数 每一个数组元素都可以看作是一个独立的变量,所以使用数组元素作为函数参数时,和普通变量作为函数的实参的用法没有区别。 数组名作为函数的实参,实际上是把数组的首地址传递给函数,而不会将数组的内容复制一份传递给函数。 * 【例13-1:】 数组元素作函数的参数 #include iostream using namespace std; int Sum(int a, int b); void main() { int a[]={1,2,3,4,5,6,7,8,9}; //将数组元素作为函数的参数 cout数组的两个元素之和是:Sum(a[0],a[3])endl; } int Sum(int a,int b) { return a+b; } * /***在函数调用时,也可以将数组元素按照指针传递或者引用传递的方式传递给函数***/ int Sum(int *pa, int *pb); void main() { int a[]={1,2,3,4,5,6,7,8,9}; //将数组元素作为函数的参数 cout数组的两个元素之和是:Sum(a[0],a[3])endl; }

文档评论(0)

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

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

1亿VIP精品文档

相关文档