- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第四講 函数及变量的作用域
第四讲 函数及变量的作用域
函数的定义和说明
函数的调用
函数的参数
内联函数
函数重载
函数的嵌套调用和递归调用
作用域
C++的系统函数
主要内容
4.1 函数的定义和说明
函数的定义格式
函数的说明方法
一个C++函数由函数头与函数体两部分组成。
形式如下:
函数类型 函数名(形式参数类型 形式参数名,…)
{
函数体
}
如: int fun1(char c,float f)
{
int m=1;
m+=c+f;
return m;
}
函数的定义格式
即函数返回值的类型。无返回值为void类型
语句序列。描述了实现功能的过程,并一般要最后执行一条return语句。
可包含多个形式参数。定义了函数将从调用函数中接收多少个数据及其类型
返回语句的形式为:
return 表达式;
这时表达式的结果就是函数的返回值,也称函数值。
即返回的不是函数本身,而是一个值。
若函数所执行的功能不需要返回数据,则可缺省 return语句。如:
void spc (int n)
{
for (int I=0; In; I++)
cout*;
} 注意:函数类型为void,若无默认为int。
C++不允许函数定义嵌套。
函数的说明方法
其形式为:函数类型 函数名(参数类型表);
如:
int absolute_value ( int ,double);
C++要求在调用函数前让编译器知道其函数原型,以便编译器利用函数原型提供的信息来检查调用的合法性,强制参数为适当类型,保证参数的正确传递。
而编译器获得函数原型有两种情况:
(1)当函数定义在调用之前时,则从定义中抽取函数原型。
(2)当函数定义在调用之后时,则程序员须在调用之前用函数原型对函数进行声明,让编译器获得函数原型。
即所有参数的数据类型
对于标准库函数的函数原型都在头文件中提供了,程序可用#include命令包含进来即可;
注意:函数原型和函数定义在返回类型、函数名和参数表上必须完全一致,否则编译错误。
注 意
#include iostream.h
void f1 ( ) ; //函数说明
void f2 ( ) ;
void main( )
{
f1( ); //函数调用
f2( );
}
void f1( ) //函数定义
{cout Function f1.\n;f2( );}
void f2( )
{cout Function f2 .\n;}
main()
f1()
f2()
4.2 函数的调用
函数的值和类型
函数的传值调用
函数的引用调用
函数的值和类型
函数调用通过调用表达式进行。
表达式形式为:函数名(实参表列)
函数调用过程是:
为形参及函数体中的变量分配存储空间;
用实参向形参传递数据;
中断现行(调用)函数,将控制转交给被调用函数执行。
函数调用后的返回过程是:
先计算出返回语句中表达式的值
若表达式值的类型与函数类型不一致,则强制转换。
将计算出的表达式值返回给调用函数作为返回值。
将控制由被调用函数转向调用函数,执行后面的语句。
如:
#includeiostream.h
int lmax(int,int); //函数声明
void main( )
{
int limit=32; char ch=A; long mval;
mval=lmax(limit,ch); //调用表达式
coutmvalendl;
}
int lmax(int a,int b) //函数定义
{ return (ab?a:b); }
实参的个数、类型及顺序要与形参保持一致
形式参数
实际参数
说明:
(1)实参在进行函数调用时,必须具有确定的值,以便把这些值传送给形参。
(2)形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。
因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。
(3)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参
文档评论(0)