- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章 过程的组织和管理
2.1 函数
2.1.1 函数结构和函数定义
一个大型的程序一般可以分成一系列“单一功能模块”的集合。在C++中,单一功能模块通常设计成一个函数。因而C++程序可以设计成一系列函数的组合,这是面向过程程序设计的一般方法。一个完整的C++程序一般包含一个主函数和若干个子函数,主函数可以调用子函数,子函数也可以调用其它的子函数。利用函数可以大大降低程序设计的工作量,使程序更加清晰可靠。很多编译系统本身就带有很多预定义的函数,并把它们以库函数的形式提供给用户,这大大方便了程序设计人员。函数定义的一般形式如下:
类型标识符 函数名(形参列表)
{
函数体;
}
类型标识符为函数的返回类型,可以是整型、浮点型等C++的合法类型,也可以是无值型(void型)。
函数名是函数的标识,可以是一个有效的C++标识符。
形参列表是括在圆括号内的0个或多个以逗号分隔的形式参数。它定义了函数将从调用函数中接收几个数据及它们的类型,所以称为形式参数。所谓形式参数的含义是指仅当函数被调用时,系统才为其分配存储空间。与之相应,主调程序传递过来的参数称之为实在参数。通常,形式参数和实在参数简称为形参和实参。
函数的返回值由返回语句return来实现。
例2.1.1
// filename:ex211.cpp
// 判断一个数是否素数
#includeiostream.h
char prime(unsigned int number);
int main()
{
int m;
coutThe primers from 3-100 are:endl;
for(m=3;m=100;m++)
if(prime(m)==1) coutm,;
return 0;
}
char prime(unsigned int number)
{
char f=1;
unsigned int n;
for(n=2;n=number/2;n++)
if(number%n==0){
f=0;
break;
}
return f;
}
2.1.2 函数名重载
函数名重载就是多个函数使用同一个函数名。
例2.1.2
// filename:ex212.cpp
// 判断两数较大者
#includeiostream.h
int max(int x,int y);
double max(double x,double y);
int main()
{
coutmax(10,20)endl;
coutmax(1.23,4.56)endl;
return 0;
}
int max(int x,int y)
{
return xy?x:y;
}
double max(double x,double y)
{
return xy?x:y;
}
函数重载的好处是主调函数会根据参数自动选择正确的子函数,这大大提高了程序的通用性和可读性。
2.1.3 内嵌函数
程序在执行过程中,每调用一次函数,就要在调用与返回过程中付出一定的时间和空间代价用于处理现场,通常是用堆栈进行保护,返回时退栈恢复现场。但当函数较小,又反复使用时,处理现场的开销会急剧增大。若把函数嵌入函数调用处,便可以大大提高运行速度。这当然是以牺牲存储空间作为代价的。内嵌函数在程序编译时直接将代码嵌入到调用处,这增加了代码的长度,但运行速度大大加快。
例2.1.3
/// filename:ex213.cpp
// 判断两数较大者
#includeiostream.h
inline double max(double x,double y);
int main()
{
int i;
double a,b;
for(i=1;i3;i++)
{
coutEnter two real:;
cinab;
coutmax(a,b)endl;
}
return 0;
}
double max(double x,double y)
{
return xy?x:y;
}
内嵌函数有如下限制:
(1) 内嵌函数中不能有循环结构或switch结构及goto语句;
(2) 内嵌函数中不能含有任何静态数据及数据声明。
由于有以上限制,使用起来不是太方便。因此,除非必要,一般尽量不使用内嵌函数。
2.1.4 递归函数
一个函数直接或间接调用自身,便构成了函数的递归调用。递归在程序设计中经常用到,它可以大大简化程序的设计。
例2.1.4 递归计算n!的函数。
int rfact(int n)
{
if(n0){
cout“Negative argument.”endl;
exit(-1);
}
您可能关注的文档
- ABC方法全生命期软件体系结构支持.ppt
- AIX操作系统下应用系统维护与性能优化.pdf
- ALU与ALU控制器设计.docx
- AMR在车辆检测应用.pdf
- AMX与快思聪中控系统对比.doc
- Android框架与HMTL5开发平台PhoneGap架构设计与深度定制培训.doc
- Ansoft课程设计.docx
- APEX 企业综合管理系统设计方案.doc
- ASBR工艺研究现状与发展_邵享文.pdf
- Asiasoft SOX 6000流媒体IPTV服务平台解决方案.pdf
- C++游戏基础物理建模之粒子系统模拟.docx
- CAD/CAM在服装设计中应用.ppt
- CADCAE集成技术在内燃机设计中应用.pdf
- CAFH化学过滤器在ZH型离心式压缩机上应用.pdf
- cAMP, cGMP 拮抗性代谢调节与中医证候关系的研究进展.doc
- CBERS_2_CCD影像数据在干旱区绿洲景观信息图谱中应用与的研究.pdf
- CdS_TiO_2光催化去除水体中氨氮研究.pdf
- Ce0.35Zr 0.55La0.10O1.95对低贵金属Pt-Rh型三效催化剂性能影响.pdf
- Chaum-van Antwerpen不可否认签名改进.pdf
- CMK-5负载Pt-Ni合金催化剂及甲醇电化学氧化性能-英文.pdf
文档评论(0)