3面向对象程序设计A第三章函数重点.ppt

  1. 1、本文档共98页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
“函数”——Function——功能 即每一个函数实现一个功能 #include iostream using namespace std; void printstar(void) //定义printstar函数 { cout″****************************** ″endl; //输出30个“*” } void printmessage(void) //定义printmessage函数 { cout″Welcome to C++!″endl; //输出一行文字 } int main(void) { printstar( ); //调用printstar 函数 printmessage( ); //调用printmessage函数 printstar( ); //调用printstar 函数 return 0; } 从用户使用的角度看,函数有两种: (1) 系统函数,即库函数?这是由编译系统提供的,用户不必自己定义这些函数,可以直接使用它们? (2) 用户自己定义的函数?用以解决用户的专门需要? 从函数的形式看,函数分两类: (1) 无参函数?调用函数时不必给出参数? (2) 有参函数?在调用函数时,要给出参数?在主调函数和被调用函数之间有数据传递? 问题:什么是定义,什么是声明? 定义是指对函数功能的确立,包括指定函数名?函数类型?形参及其类型?函数体等,它是一个完整的?独立的函数单位? 声明的作用则是把函数的名字?函数类型以及形参的个数?类型和顺序(注意,不包括函数体)通知编译系统,以便在对包含函数调用的语句进行编译时,据此对其进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致) 注: “声明”为编译服务,用于类型检查,可以重复声明,可以没有;“定义”在运行时会分配空间,不能重复定义,同时具备声明的功能。 例 有5个人坐在一起,问第5个人多少岁?他说比第4个人大两岁?问第4个人岁数,他说比第3个人大两岁?问第3个人,又说比第2个人大两岁?问第2个人,说比第1个人大两岁?最后问第1个人,他说是10岁?请问第5个人多大? 每一个人的年龄都比其前1个人的年龄大两岁?即 分析: 可以看到,当n1时,求第n个人的年龄的公式是相同的?因此可以用一个函数表示上述关系?下图表示求第5个人年龄的过程? #include iostream using namespace std; int age(int);//函数声明 int main( )//主函数 { coutage(5)endl; return 0; } int age(int n)//求年龄的递归函数 {int c; //用c作为存放年龄的变量 if(n==1) c=10; //当n=1时,年龄为10 else c=age(n-1)+2; //当n1时,此人年龄是他前一个人的年龄加2 return c; //将年龄值带回主函数 } n=5,k=2为例 函数模板 函数模板可以用来创建一个通用功能的函数,以支持多中不同的形参,进一步简化重载函数的函数体设计 例 求绝对值函数的模板 #includeiostream.h templatetypename T T abs(T x) { return x0?-x:x; } void main( ) { int n=-5; double d=-5.5; coutabs(n)endl; coutabs(d)endl; } 运行结果: 5 5.5 分析 编译器从调用abs( )时实参的类型,推导出函数模板的类型参数。例如,对于调用表达式abs(n),由于实参n为int型,所以推导出模板中类型参数T为int。 当类型参数的含义确定后,编译器将以函数模板为样板,生成一个函数: int abs(int x) { return x0?-x:x; } 例1:以下程序的输出结果是_ #includeiostream.h void main(){ int x=1,y=2; void s_value(int y,int x); s_value(y,x); cout<<x=<<x<<,<<y=<<y<<endl;} void s_value(int x,int y){ cout<<x=<<x<<,<<y=<<y<<endl; x=3; y=4; } 例2:以下叙述正确的是_。 A.建立内联函数的主要目的是提高程序的执行效率 B.建立内联函数的主要目的是减少程序文件所占用的内存 C.内联函数的参数传递关系与一般函数的参数传递关系不同 D. 任意函数均可定义成为内联函数 例3:关于函数的声明和

文档评论(0)

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

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

1亿VIP精品文档

相关文档