函数

1.为什么要用函数

每个 C++ 程序都至少有一个函数,即主函数 main() ,如果程序的代码不多,可以直接写在主函数里面,如果程序比较复杂,需要重复使用一个功能,为了在后面维护程序方便,保证程序的简洁性,高度封装性,就需要使用函数,有时需要定义类,将多个相同性质的函数放在一个类中。

2.为什么要用函数重载

两个以上的函数,具有相同的函数名,但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪一个函数,这就是函数的重载。

当你的参数类型或者参数个数不同,又不想写多个函数,这时候就可以用重载函数啦。对于程序的可读性有很大的好处。

3.什么是值传递

值传递就是字面意思,只传递值。比如说下面这行代码:

void swap(int a,int b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

的运行结果是:
a=a;
b=b;
举个例子,我复印一张文件给你,你拿到的复制品可以随便修改,但是不会改变我原来文件。这里的值传递中的形参就相当于实参的复制品,不会对实参有影响。

4.什么是地址传递

地址传递可以这么理解,就是直接把原件给你啦。

void swap(int *a,int *b)
{
    int temp;
    temp=*a;
    *a=*b;
    *b=temp;
}

这个函数的输出结果是:
a=b;
b=a;

5.编写递归函数

函数可以直接或间接地调用自身,称为递归调用。

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出:
fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n
所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。
于是,fact(n)用递归的方式写出来就是:

int fact(n){
    if( n==1)
        return 1;
    return n * fact(n - 1);
    }
原文地址:https://www.cnblogs.com/simple5960/p/11504803.html