在 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。 }