欢迎来到天天文库
浏览记录
ID:5906411
大小:781.50 KB
页数:64页
时间:2017-11-13
《第四讲 函数及变量的作用域》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四讲函数及变量的作用域函数的定义和说明函数的调用函数的参数内联函数函数重载函数的嵌套调用和递归调用作用域C++的系统函数主要内容4.1函数的定义和说明函数的定义格式函数的说明方法一个C++函数由函数头与函数体两部分组成。形式如下:函数类型函数名(形式参数类型形式参数名,…){函数体}如:intfun1(charc,floatf){intm=1;m+=c+f;returnm;}函数的定义格式即函数返回值的类型。无返回值为void类型语句序列。描述了实现功能的过程,并一般要最后执行一条return语句。可包含多个形式
2、参数。定义了函数将从调用函数中接收多少个数据及其类型返回语句的形式为:return表达式;这时表达式的结果就是函数的返回值,也称函数值。即返回的不是函数本身,而是一个值。若函数所执行的功能不需要返回数据,则可缺省return语句。如:voidspc(intn){for(intI=0;I3、求在调用函数前让编译器知道其函数原型,以便编译器利用函数原型提供的信息来检查调用的合法性,强制参数为适当类型,保证参数的正确传递。而编译器获得函数原型有两种情况:(1)当函数定义在调用之前时,则从定义中抽取函数原型。(2)当函数定义在调用之后时,则程序员须在调用之前用函数原型对函数进行声明,让编译器获得函数原型。即所有参数的数据类型对于标准库函数的函数原型都在头文件中提供了,程序可用#include命令包含进来即可;注意:函数原型和函数定义在返回类型、函数名和参数表上必须完全一致,否则编译错误。注意#include4、voidf1();//函数说明voidf2();voidmain(){f1();//函数调用f2();}voidf1()//函数定义{cout<<"Functionf1.";f2();}voidf2(){cout<<"Functionf2.";}main()f1()f2()4.2函数的调用函数的值和类型函数的传值调用函数的引用调用函数的值和类型函数调用通过调用表达式进行。表达式形式为:函数名(实参表列)函数调用过程是:为形参及函数体中的变量分配存储空间;用实参向形参传递数据;中断现行5、(调用)函数,将控制转交给被调用函数执行。函数调用后的返回过程是:先计算出返回语句中<表达式>的值若表达式值的类型与函数类型不一致,则强制转换。将计算出的表达式值返回给调用函数作为返回值。将控制由被调用函数转向调用函数,执行后面的语句。如:#includeintlmax(int,int);//函数声明voidmain(){intlimit=32;charch='A';longmval;mval=lmax(limit,ch);//调用表达式cout<6、nta,intb)//函数定义{return(a>b?a:b);}实参的个数、类型及顺序要与形参保持一致形式参数实际参数说明:(1)实参在进行函数调用时,必须具有确定的值,以便把这些值传送给形参。(2)形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。(3)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。(4)实参和形参占用不同的内存单元,即使同名也互不影响。函数的7、传值调用C++中变量值有两种:变量本身值和变量地址值。而形参的类型也就分为两种:一般类型和指针类型。则传值调用的方式也有两种:传值调用和传址调用有时也称:直接调用与间接调用1、传值调用的实现机制和特点实现机制是:调用函数中的数据只是在调用之初通过实参向形参传递,之后各占有不同的空间,并且不再发生联系,互不干扰。特点是:形参值的改变不影响实参。实参本身的值在调用前后和调用过程中都不发生变化。函数swap本想实现交换a和b值的功能,但调用结果却不如意。原因就在于这种调用是一种值调用。例:#include8、m.h>voidswap(int,int);voidmain(){inta=3,b=5;cout<<"beforeswap:a="<
3、求在调用函数前让编译器知道其函数原型,以便编译器利用函数原型提供的信息来检查调用的合法性,强制参数为适当类型,保证参数的正确传递。而编译器获得函数原型有两种情况:(1)当函数定义在调用之前时,则从定义中抽取函数原型。(2)当函数定义在调用之后时,则程序员须在调用之前用函数原型对函数进行声明,让编译器获得函数原型。即所有参数的数据类型对于标准库函数的函数原型都在头文件中提供了,程序可用#include命令包含进来即可;注意:函数原型和函数定义在返回类型、函数名和参数表上必须完全一致,否则编译错误。注意#include
4、voidf1();//函数说明voidf2();voidmain(){f1();//函数调用f2();}voidf1()//函数定义{cout<<"Functionf1.";f2();}voidf2(){cout<<"Functionf2.";}main()f1()f2()4.2函数的调用函数的值和类型函数的传值调用函数的引用调用函数的值和类型函数调用通过调用表达式进行。表达式形式为:函数名(实参表列)函数调用过程是:为形参及函数体中的变量分配存储空间;用实参向形参传递数据;中断现行
5、(调用)函数,将控制转交给被调用函数执行。函数调用后的返回过程是:先计算出返回语句中<表达式>的值若表达式值的类型与函数类型不一致,则强制转换。将计算出的表达式值返回给调用函数作为返回值。将控制由被调用函数转向调用函数,执行后面的语句。如:#includeintlmax(int,int);//函数声明voidmain(){intlimit=32;charch='A';longmval;mval=lmax(limit,ch);//调用表达式cout<6、nta,intb)//函数定义{return(a>b?a:b);}实参的个数、类型及顺序要与形参保持一致形式参数实际参数说明:(1)实参在进行函数调用时,必须具有确定的值,以便把这些值传送给形参。(2)形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。(3)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。(4)实参和形参占用不同的内存单元,即使同名也互不影响。函数的7、传值调用C++中变量值有两种:变量本身值和变量地址值。而形参的类型也就分为两种:一般类型和指针类型。则传值调用的方式也有两种:传值调用和传址调用有时也称:直接调用与间接调用1、传值调用的实现机制和特点实现机制是:调用函数中的数据只是在调用之初通过实参向形参传递,之后各占有不同的空间,并且不再发生联系,互不干扰。特点是:形参值的改变不影响实参。实参本身的值在调用前后和调用过程中都不发生变化。函数swap本想实现交换a和b值的功能,但调用结果却不如意。原因就在于这种调用是一种值调用。例:#include8、m.h>voidswap(int,int);voidmain(){inta=3,b=5;cout<<"beforeswap:a="<
6、nta,intb)//函数定义{return(a>b?a:b);}实参的个数、类型及顺序要与形参保持一致形式参数实际参数说明:(1)实参在进行函数调用时,必须具有确定的值,以便把这些值传送给形参。(2)形参变量只有在被调用时,才分配内存单元;调用结束时,即刻释放所分配的内存单元。因此,形参只有在该函数内有效。调用结束,返回调用函数后,则不能再使用该形参变量。(3)实参对形参的数据传送是单向的,即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。(4)实参和形参占用不同的内存单元,即使同名也互不影响。函数的
7、传值调用C++中变量值有两种:变量本身值和变量地址值。而形参的类型也就分为两种:一般类型和指针类型。则传值调用的方式也有两种:传值调用和传址调用有时也称:直接调用与间接调用1、传值调用的实现机制和特点实现机制是:调用函数中的数据只是在调用之初通过实参向形参传递,之后各占有不同的空间,并且不再发生联系,互不干扰。特点是:形参值的改变不影响实参。实参本身的值在调用前后和调用过程中都不发生变化。函数swap本想实现交换a和b值的功能,但调用结果却不如意。原因就在于这种调用是一种值调用。例:#include8、m.h>voidswap(int,int);voidmain(){inta=3,b=5;cout<<"beforeswap:a="<
8、m.h>voidswap(int,int);voidmain(){inta=3,b=5;cout<<"beforeswap:a="<
此文档下载收益归作者所有