在 C++ 中,函数是一组给定名称的语句。每个 C++ 程序都必须有一个主函数 main(),它是程序执行的起点。一个 C++ 程序由一个主函数和若干子函数组成。
1 函数的定义
C++ 中的函数分为 C++ 标准库函数和自定义函数。使用标准库函数需要包含特定的头文件,比如使用 vector 功能时,需包含头文件 #include。而自定义函数是用户自定义命名和声明的一组语句,其基本结构为:.
type name(parameter list){
code
}
其中 type 为函数的返回值类型;name 为函数的名称,也是调用函数所使用的标识符;parameter list 为传递给函数的参数列表;code 为函数的主体,存放函数需要执行的语句。例如我们定义一个 add 函数:
int add(int a,int b){
return a + b;
}
add 函数的功能是利用 return 关键字返回 a 加 b 的和。
2 函数的声明和调用
函数的声明
如果希望在定义函数前调用函数,则需要在调用函数前声明函数,其结构为:
type name(parameter list);
其中 type 为函数的返回值类型;name 为函数的名称;parameter list 为传递给函数的参数列表。例如上例的 add 函数,如果要在定义 add 函数前调用 add 函数,则需要在调用此函数前,对函数进行声明:
int add(int a,int b); //函数声明。
int main(){
调用 add 函数 //在未定义函数前调用函数。
}
int add(int a,int b){
return a + b;
} //定义函数
函数的调用
调用函数时,需暂停主调函数的执行,转入执行被调函数,当被调函数执行至 return 语句或函数末尾时,被调函数执行完毕,转回执行主调函数。可按如下格式调用函数:
函数名(实参列表)
参数传递
一般有引用传递和值传递两种方式。
值传递复制一个形式参数,引用则传递其地址。
默认参数
可以在参数列表中可以直接确定参数的值。
#include<iostream>
using namespace std;
int add(int a,int b = 5){//变量 b 的值默认为 5。
return a + b;
}
int main()
{
int a,b;
cout<<"input a b:"<<endl;
cin>>a>>b;
cout<<"a + b(default) = "<<add(a)<<endl; //此时调用的 add 函数将 b 的值缺省,使之为默认参数。
cout<<"a + b = "<<add(a,b)<<endl;
return 0;
}
函数重载
指的是函数同名的情况,这种情况下我们往往通过函数参数的个数形式来区分。
#include<iostream>
using namespace std;
int add(int a,int b){ //定义整型函数 add。
int c;
c = a - b;
return c;
}
double add(double a,double b){ //定义双精度型函数 add。
double c;
c = a + b;
return c;
}
int main()
{//函数重载。
cout<<"a + b = "<<add(3,4)<<endl;//调用整型函数 add。
cout<<"a + b = "<<add(3.111,4.222)<<endl;//调用双精度型函数 add。
}