C++_函数与编译预处理.ppt

  1. 1、本文档共66页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C_函数与编译预处理

#include iostream.h int f(int n) { if(n==1) return 1; else return f(n-1)+1; } void main() { for(int i=1,j=0;i3;i++) j=j+f(i); coutjendl; } 输出:3 i=1 f(1) j=1 i=2 f(2) j=3 f(1)+1 4.11 内部函数和外部函数 1)内部函数 函数定义时,在类型标识符前加 static 修饰词,限制函数只能在该文件内调用 。 在一个源程序文件中定义的函数,不仅在该文件内能调用,而且允许在其它程序文件中调用,这种函数称为外部函数。 外部函数用 extern(缺省)修饰。 多文件组织方式中,在一个文件中要调用在另一个程序文件中定义的外部函数时,必须先对被调用的函数作原型说明,并在函数原型说明的前面加上修饰词 extern。 2)外部函数 //f1.cpp #includeiostream.h extern void fun ( void ) ; //A void main( ) { fun( ); //B } 源文件f2.cpp的内容为: //f2.cpp void fun ( void ) { int a=1 , b=2 ; a+=2 ; b*=10 ; couta= a\nb= b\n; } 例:有5个人坐在一起,问第5个人多少岁,他说比第4个人大2岁。问第4个人多少岁,他说比第3个人大2岁。问第3个人多少岁,他说比第2个人大2岁。问第2个人多少岁,他说比第1个人大2岁。问第1个人多少岁,他说是10岁。请问第5个人多大? age(5)=age(4)+2 age(4)=age(3)+2 age(3)=age(2)+2 age(2)=age(1)+2 age(1)=10 age(n)= 10 n=1 age(n-1)+2 n1 void main(void) { int age(int); coutage(5)endl; } int age ( int n ) { int c; if (n==1) c=10; else c=age(n-1)+2; return c; } int age ( int n ) { int c; if (n= =1) c=10; else c=age(n-1)+2; return c; } void main(void) { int age(int); coutage(5)endl; } age (5) n=5 c=age (4)+2 age (4) n=4 c=age (3)+2 age (3) n=3 c=age (2)+2 age (2) n=2 c=age (1)+2 age (1) n=1 c=10 return c return c c=12 return c c=14 return c c=16 return c c=18 虽然算法一致,但n不同,c不同,在内存中每一层函数变量所在的内存单元均不相同。必须有递归终止条件和递归公式。 递归 回推 例4.11 阅读下面程序,分析程序运行的结果。 void recu ( char c ) { coutc ; if(c3)recu (c+1) ; coutc ; } void main( ) { recu (0); } 程序运行后的输出结果是: 4.7 函数的重载 函数的重载是指完成不同功能的函数可以具有相同的函数名。 (C语言无此功能) 调用重载函数时,C++编译器根据实参的类型或实参的个数来确定应该调用哪一个函数。 注意: 重载函数的参数个数或参数类型必须有不同 仅返回值类型不同时,不能定义为重载函数 例: 利用重载函数,分别计算两个整数、单精度实数和双精度实数中的大数。 #include iostream.h int max(int x, int y) { return ( xy?x:y ); } float max(float a,

文档评论(0)

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

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

1亿VIP精品文档

相关文档