C++中的C++函数是数学中的一种对应关系,是从非空数集A到实数集B的对应,简单地说,A随着C变,那么A就是C的函数,对应法则和定义域是函数领域中的两个主要要素。
C++函数是与主程序分开的码段。这些码段在程序中需要进行特定动作时调用(执行)。例如,函数可能取两个值并对其进行复杂的数学运算。
- 1: #include <iostream.h>
- 2: #include <conio.h>
- 3: #pragma hdrstop
- 4:
- 5: int multiply(int,int)
- 6: void showResult(int);
- 7:
- 8:int main(int argc,char **argv);
- 9:{
- 10: int x,y,result;
- 11: cout << end1 << "Enter the first value:";
- 12: cin >> x;
- 13: cout << "Enter the second value: ";
- 14: cin >> y;
- 15: result=multiply(x,y);
- 16: showResult(result);
- 17: cout << end1 << end1 << "Press any key to continue...";
- 18: getch();
- 19: return 0
- 20: }
- 21:
然后返回结果,函数可能取一个字串进行分析,然后返回分析字串的一部分。新术语 函数(function)是与主程序分开的码段,进行预定的一个服务。函数是各种编程语言的重要部分,C++也不例外。最简单的函数不带参数,返回void(表示不返回任何东西),其它函数可能带一个或几个参数并可能返回一个值。
函数名规则与变量名相同。图1.5显示了函数的构成部分。新术语 参数(parameter)是传递给函数的值,用于改变操作或指示操作程度。 函数声明或原型(prototype)告诉编译器函数所取的参数个数、每个参数的数据类型和函数返回值的数据类型。
清单1.4列示了这个概念。新术语 原型(prototype)是函数外观的声明或其定义的说明。 这个程序的11到14行用标准输入流cin向用户取两个数字,第15行调用multiply()函数将两个数相乘,第16行调用showResult()函数显示相乘的结果。
注意主程序前面第5和第6行multiply()和showResult()函数的原型声明。原型中只列出了返回类型、函数名和函数参数的数据类型。这是函数声明的最基本要求。函数原型中还可以包含用于建档函数功能的变量名。
multiply()函数的函数声明可以写成如下:int multiply(int firstNumber,int secondNumber);这里函数multiply()的作用很明显,但代码既可通过说明也可通过代码本身建档。注意清单1.4中函数multiply()的定义(22到25行)在主函数定义码段(8到20行)之外。
函数定义中包含实际的C++函数体。这里的函数体是最基本的,因为函数只是将函数的两个参数相乘并返回结果。清单1.4中函数multiply()可以用多种方法调用,可以传递变量、直接数或其它函数调用的结果:#t#
注意 最后一例中没有使用返回值。本例中调用函数multiply()而不用返回值没什么道理,但C++编程中经常忽略返回值。有许多函数是先进行特定动作再返回一个数值,表示函数调用的状态。有时返回值与程序无关,可以忽略不计。
如果将返回值忽略,则只是放弃这个值,而不会有别的危害。例如,前面的样本程序中忽略了getch()函数的返回值(返回所按键的ASCII值)。函数可以调用其它函数,甚至可以调用自己,这种调用称为递归(recursion)。
这在C++编程中是个较复杂的问题,这里先不介绍。新术语 递归(recursion)就是函数调用自己的过程。本节介绍的函数指的是C或C++程序中的独立函数(独立函数不是类的成员)。C++中的独立函数可以和C语言中一样使用,但C++函数进一步深化,将在稍后介绍C++时介绍。