C/C++学习之三
上一节讲到函数使用以解决某一问题的方法,用户只需要自己的要求去使用它,而不需要关心它是如何实现的,这是程序员的任务。下面我们主要探讨函数的参数、返回值、重载以及递归调用。
1.函数的参数
函数的参数分为实参和形参,在定义时,函数的参数为形参,当调用实现该函数时,则为实参。
举个简单的例子:
#include<stdio.h>
int max(int a,int b){//a,b为形式参数
if(a<b)
a=b;
return a;
}
int main(){
int max=max(3,4);//3,4为实参,为传入参数
printf("max=%d\n",max);
return 0;
}
以上为实参与形参的区别,此外函数还可以不带参数
void print(){
printf("你好!");
}
2.函数返回值
void 类型的函数为无返回值的,而int,char,float等类型的函数是返回值得,返回值的类型需同函数的类型一致。下面举例说明。
void print(){
printf("你好!");
}//void类型无函数的返回值
int min(int a,int b){//a,b为形式参数
if(a>b)
a=b;
return a;
}//int 型函数有函数返回值,返回类型也是int型。
3.重载
当多个函数功能类似或相近时,不用重新定义函数名字,只需要保证函数的参数类型或个数不同即可。
举个例子:
double min(double a,double b);
double min(double a,double b,double c);
int min(int a,int b);
4.函数的递归调用
递归分为自己调用自己或者相互调用。
例1.自己调用自己
int f(int n){
if(n==1) return 1;
else return n*f(n-1);
}
//该函数为求n的阶乘,f()中调用了自身。相互调用的就是A函数中调用B,然后B函数中再调用A。
对递归而言,最好给它终止条件,令它无法进行下去。
利用递归的场景一般是有重复调用的倾向或数学问题。