|
|
|
|
|
|
|
|
|
|
|
函数是程序模块的主要成分,它是一段具有独立功能的程序。函数的使用涉及3个概念,即函数定义、函数声明和函数调用。
|
|
|
(1)函数定义。包括函数首部和函数体两个部分。函数的定义描述了函数做什么和怎么做。
|
|
|
(2)函数声明。函数应该先声明后引用。函数声明定义了函数原型。声明函数原型的目的在于告诉编译器传递给函数的参数个数、类型以及函数返回值的类型,参数表中仅需要依次列出函数定义中的参数类型。函数原型可以使编译器检查源程序中对函数的调用是否正确。
|
|
|
(3)函数调用。当需要在一个函数(称为主调函数)中使用另一个函数(称为被调函数)实现的功能时,便以函数名字进行调用,称为函数调用。调用函数和被调用函数之间交换信息的方法主要有两种:一种是由被调用函数把返回值返回给主调函数;另一种是通过参数带回信息。函数调用时实参和形参间交换信息的方法有传值调用和引用调用两种。
|
|
|
①传值调用(Call by Value)。若实现函数调用时实参向形式参数传递相应类型的值(副本),则称为传值调用。这种方式下形式参数不能向实际参数传递信息。在C语言中,要实现被调用函数对实际参数的修改,必须用指针作形参。即调用时需要先对实参进行取地址运算,然后将实参的地址传递给指针形参,本质上仍属于传值调用。这种方式实现了间接内存访问。
|
|
|
②引用调用(Call by Reference)。引用是C++中增加的数据类型,当形式参数为引用类型时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实际参数所作的访问和改变。
|
|
|
|
|
|
|
|
|
|
|
|
|
C++同C一样,也是函数驱动,程序入口也是main函数。有关虚函数的概念详见6.1.1.5节。
|
|
|
|
|
|
|
C++允许有默认值,定义时指明默认变量的默认值。值得注意的是,若形参有多个时,默认变量必须在最后声明。如void power(double x, int n=2)表示n的默认值为2。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
函数是程序模块的主要成分,是一段具有独立功能的程序。函数的使用涉及3个概念,即函数定义、函数声明和函数调用。
|
|
|
函数应先声明后调用,如果程序中对一个函数的调用在该函数的定义之前进行,则应该在调用前对被调用函数进行声明。函数声明定义了函数原型,其目的在于告诉编译器传递给函数的参数个数、类型以及函数返回值的类型。
|
|
|
函数调用时实参和形参间交换信息的方法有传值调用和引用调用两种。若实现函数调用时实参向形参传递相应类型的值,则称为传值调用,在这种形式下,形式参数不能向实际参数返回信息。当形式参数为引用类型时,函数中对形参的访问和修改实际上就是对相应的实际参数所作的访问和改变。
|
|
|
|
|
|
|
|
|
|
|
|
|
函数可以被看作是一个由用户定义的操作。一般来说,函数用一个名字来表示,函数的操作数称为参数(parameter),由一个位于括号中并且用逗号分隔的参数表(Parameter List)指定。函数的结果被称为返回值(Return Value),返回值的类型被称为函数返回类型(Return Type)。不产生值的函数返回类型是void,意思是什么都不返回。函数执行的动作在函数体(body)中指定。函数体包含在花括号中,有时也称为函数块(Function Block)。函数返回类型以及其后的函数名、参数表和函数体构成了函数定义。
|
|
|
函数是C++语言程序的基本功能单元,其重要性不言而喻。函数接口的两个要素是参数和返回值。C语言中,函数的参数和返回值的传递方式有两种:值传递(Pass By Value)和指针传递(Pass by Pointer)。C++语言中多了引用传递(Pass by Reference)。
|
|
|
|
|
|
|
|
|
|
|