欢迎来到天天文库
浏览记录
ID:34510101
大小:139.07 KB
页数:9页
时间:2019-03-07
《第4章 函数new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、高级语言程序设计及应用第4章函数4.1函数的定义与使用4.1.1函数的定义C++规定在程序中调用一个函数之前,必须先对函数做引用性声明,一般也称为函数的说明。而在整个C++程序中,函数必须是先定义后使用,一般称为对函数的定义。函数的说明,是对函数的名称、参数和返回值类型进行声明,以便程序中对这个函数的调用在形式上能够被编译器严格地检查,以确定调用是否完全匹配;而函数的定义则不仅说明了函数的名称、参数和返回值,而且给出了函数体的完整说明,函数体是指这个函数名所代表的语句集合。函数定义的一般形式:<类型说明符><函数名称>(<参
2、数列表>){函数体;}其中,<类型说明符>指出函数的类型,即函数返回值的类型,函数返回值的类型有时也被称为函数的类型,它可以是除数组和函数以外的任意C++合法类型,包括数组指针和函数指针等。函数命名必须符合C++有关标识符的规定,它可以是任意的C++标识符。在括号中的<参数列表>是一组用逗号分隔的变量说明,这些变量称为函数的形参,用于从调用程序中接收输入数据。当一个函数没有返回值时,定义它的返回值类型为void,若没有给出返回值类型的定义,此时缺省定义函数返回值的类型为int,因而需要注意不定义函数返回值类型并不意味该函数没
3、有返回值,而要将其定义为void类型该函数才没有返回值。参数列表可以为空,此时函数不需要调用程序给出输入数据,称为无参函数,如果函数在(<参数列表>)括号中填入void则会使函数的定义更明确其无须调用程序给出输入数据。函数体中允许无语句,这种函数称为空函数,即是一种不做任何操作的函数。空函数可以用来作为程序的扩充。2、例子:intmax(inta,intb,intc)//函数头{//函数体开始intm=(a>b)?a:b;return(m>c)?m:c;}//函数体结束4.1.2函数的说明函数的定义是对该函数功能的描述,而函
4、数的说明是在调用该函数之前,说明该函数的类型及函数参数的数据类型。对一个函数的说明可以多次,而对一个函数的定义在一个程序中只能一次。函数说明的一般形式:<类型说明符><函数名称>(<参数列表>);C++中规定定义函数时必须指出该函数的类型,在说明函数时,要求用原型说明,原型说明包含函数名、函数类型与函数参数类型。例如:intmax(inta,intb,intc);//max函数的原型4.1.3函数的调用(1)调用形式调用函数之前先要在主调函数中声明函数原型,然后按照下面形式调用:函数名(实参表)第3-1页高级语言程序设计及应
5、用(2)函数调用举例:编写一个求x的n次方的函数。#include”iostream.h”doublepower(doublex,intn);//声明power函数的原型voidmain(void)//主调函数{cout<<”5tothepower2is”<6、callbyvalue)函数调用引用调用(callbyreference)2、值调用值调用又分为(数)值调用和址调用,后者在C中也称为callbyreference。值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。一旦实参值拷贝到了形参,形参便与实参脱离关系,此后在被调用函数中无论对形参进行何种操作,形参的变化都不会影响到实参。(1)值调用举例:#include<iostream.h>voidSwap(inta,intb);intmain(){intx(5),y(10);co7、ut<<”x=”<<x<<endl;cout<<”y=”<<y<<endl;Swap(x,y);cout<<”x=”<<x<<”y=”<<y<<endl;return0;}voidSwap(inta,intb){intt;t=a;a=b;b=t;第3-2页高级语言程序设计及应用}输出结果:x=5y=10x=5y=10从上面程序的运行结果可以看出,并没有达到交换的目的。原因:调用为值调用,形参的变化没有影响到实参。3、址调用举例:#include<iostream.h>voidSwap(int*a,int*b);intmain8、(){intx(5),y(10);cout<<”x=”<<x<<endl;cout<<”y=”<<y<<endl;Swap(&x,&y);cout<<”x=”<<x<<”y=”<<y<<endl;return0;}voidSwap(int*a,int*b){intt;t=*a;*a=*b;
6、callbyvalue)函数调用引用调用(callbyreference)2、值调用值调用又分为(数)值调用和址调用,后者在C中也称为callbyreference。值调用是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。一旦实参值拷贝到了形参,形参便与实参脱离关系,此后在被调用函数中无论对形参进行何种操作,形参的变化都不会影响到实参。(1)值调用举例:#include<iostream.h>voidSwap(inta,intb);intmain(){intx(5),y(10);co
7、ut<<”x=”<<x<<endl;cout<<”y=”<<y<<endl;Swap(x,y);cout<<”x=”<<x<<”y=”<<y<<endl;return0;}voidSwap(inta,intb){intt;t=a;a=b;b=t;第3-2页高级语言程序设计及应用}输出结果:x=5y=10x=5y=10从上面程序的运行结果可以看出,并没有达到交换的目的。原因:调用为值调用,形参的变化没有影响到实参。3、址调用举例:#include<iostream.h>voidSwap(int*a,int*b);intmain
8、(){intx(5),y(10);cout<<”x=”<<x<<endl;cout<<”y=”<<y<<endl;Swap(&x,&y);cout<<”x=”<<x<<”y=”<<y<<endl;return0;}voidSwap(int*a,int*b){intt;t=*a;*a=*b;
此文档下载收益归作者所有