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);
}