开发手册 欢迎您!
软件开发者资料库

C++ 函数

函数是仅在调用时运行的代码块。可以将数据(称为参数)传递给函数。函数可以返回数据。函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。本文主要介绍C++ 函数。

1、定义函数(实现)

在C++中,函数的定义顺序是有讲究的:默认情况下,只有后面定义的函数才可以调用前面定义过的函数。

例如,

#include using namespace std;/* 函数返回两个数中较大的那个数 */int max(int num1, int num2) {   /* 局部变量声明 */   int result;   if (num1 > num2)      result = num1;   else      result = num2;   return result; }int main (){   /* 局部变量定义 */   int a = 100;   int b = 200;   int ret;   /* 调用函数来获取最大值 */   ret = max(a, b);   cout << "Max value is : " << ret << endl;   return 0;}

注意:上面这样调用合法的,但如果调换sum函数和main函数的顺序,在标准的C编译器环境下是不合法的(不过在GCC编译器环境下只是一个警告)。

2、函数声明

如果想把函数的定义写在main函数后面,而且main函数能正常调用这些函数,那就必须在main函数的前面进行函数的声明。

函数声明地格式:

返回值类型 函数名 (参数1, 参数2, ...)

例如,

#include using namespace std;/* 函数声明 */int max(int num1, int num2);int main (){   /* 局部变量定义 */   int a = 100;   int b = 200;   int ret;   /* 调用函数来获取最大值 */   ret = max(a, b);   cout << "Max value is : " << ret << endl;   return 0;}/* 函数返回两个数中较大的那个数 */int max(int num1, int num2) {   /* 局部变量声明 */   int result;   if (num1 > num2)      result = num1;   else      result = num2;   return result; }

3、调用函数

函数调用的一般形式为:

函数名(实参列表);

调用函数时,传递所需参数,如果函数返回一个值,则可以存储返回值。例如:

#include using namespace std;/* 函数声明 */int max(int num1, int num2);int main (){   /* 局部变量定义 */   int a = 100;   int b = 200;   int ret;   /* 调用函数来获取最大值 */   ret = max(a, b);   cout << "Max value is : " << ret << endl;   return 0;}/* 函数返回两个数中较大的那个数 */int max(int num1, int num2) {   /* 局部变量声明 */   int result;   if (num1 > num2)      result = num1;   else      result = num2;   return result; }

4、函数参数

如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。

形式参数就像函数内的其他局部变量,在进入函数时被创建,退出函数时被销毁。

当调用函数时,有三种向函数传递参数的方式:

1)传值

#include using namespace std;void myswap(int x, int y){    int t;    t=x;    x=y;    y=t;}int main(){    int a, b;    cout << "请输入待交换的两个整数:";    a=10,b=20;    myswap(a,b);  //作为对比,直接交换两个整数,显然不行    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}

2)传引用

#include using namespace std;void myswap(int *p1, int *p2){    int  t;    t=*p1;    *p1=*p2;    *p2=t;}int main(){    int a, b;    cout << "请输入待交换的两个整数:";    a=10,b=20;    myswap(&a,&b);  //交换两个整数的地址    printf("调用交换函数后的结果是:%d 和 %d\n", a, b);    return 0;}

5、函数参数的默认值

定义一个函数,可以为参数列表中后边的每一个参数指定默认值。当调用函数时,如果实际参数的值留空,则使用这个默认值。

这是通过在函数定义中使用赋值运算符来为参数赋值的。调用函数时,如果未传递参数的值,则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值。

例如,

#include using namespace std;int sum(int a, int b=20){  int result;  result = a + b;  return (result);}int main (){   // 局部变量声明   int a = 100;   int b = 200;   int result;   // 调用函数来添加值   result = sum(a, b);   cout << " result =" << result << endl;   // 再次调用函数   result = sum(a);   cout << " result = " << result << endl;   return 0;}

6、函数递归

一个函数在它的函数体内,直接或者间接地调用了他本身。

例如,

问第五个学生,说他比第四个学生大两岁

第四个学生说他比第三个学生大两岁

第三个学生说他比第二个学生大两岁

第二个学生说他比第一个学生大两岁

第一个说他10岁

求第五个学生的年龄,可以使用如下解法:

#include using namespace std;/*int Age (int n){  int tmp;  tmp=10;  for(int i=1;i

注意:函数的递归调用,就是函数本身调用自己。但是应用递归调用的时候,我们有必要设置一个条件,也就是if语句,目的是能够让这个函数停下来,否则程序将进入到死循环。