》函数
函数(function)是一个可以独立完成某个功能的语句块。C++程序其实就是由一系列的函数组成。main函数是其中的一个函数,C++程序从main函数开始执行。函数的主要作用是将复杂程序拆成若干易于实现的子程序。另外将程序中重复实现的功能封装到一个函数中,这样即提高了程序的开发效率,也提高了程序的可靠性,同时也极大地增强了程序的可读性。
在C++中,函数分为标准函数(又称为预定义函数)和用户自定义函数。标准函数是系统已实现并通过函数库形式提供的函数,如数学函数sqrt、pow。字符串处理函数strcpy、strlen等。程序员在编写程序时可以直接使用标准函数。在C++中,所有的标准函数都被放在不同的函数库中,并有一个与之对应的头文件,例如,头文件iostream中包含了I/O函数,头文件cmath中包含了常用的数学函数。如果要在程序中使用标准函数,必须使用include预处理命令将包含该函数的头文件包含到程序中。标准函数在不同的平台上都具有统一的接口,所以使用标准函数一方面提高了程序的开发效率,另一方面又使得程序具有很好的可移植性。
>函数定义
定义形式:
<返回类型><函数名>(<形参列表>)
{
<函数体>
}
<函数名>一般是标识符,取一个有助于记忆和理解的名字可以增加程序的可读性。
<形参列表>由逗号分隔,分别说明函数的各个形参。形参将在函数被调用时从调用函数那里获得数据。在C++中,函数形参列表可以为空,即一个函数可以没有参数,尽管如此,括起函数参数的一对圆括号不允许省略。
<返回类型>又称函数类型,表示一个函数所计算(或运行)的结果值的类型。如果一个函数没有结果值,如果函数仅用来更新(或设置)变量值、显示信息等,则该函数返回类型为void类型。一个没有返回值的函数类似于一些程序语言(如Pascal语言)中的过程(procedure)。
由一对花括号括起来的<函数体>是语句的序列,它定义了函数应执行的具体操作。
注:C++不允许函数定义嵌套,即在一个函数体内不能包含有其他函数的定义。在C++中,return是一个关键字,当函数执行到return语句时,函数将立即终止执行,并将程序的控制权返回给调用函数。当一个函数带有返回值时,应保证函数每个可能执行路劲上应有返回值。当函数没有return语句时,在执行完最后一条语句后将返回到调用函数。
>函数调用
一般形式:
<函数名>(<实参表>)
当调用一个函数时,其实参的个数、类型及排列次序必须与函数定义时的形参相一致,也就是说实参与形参应该一对一地匹配。若函数定义时没有形参,则函数调用时<实参表>为空。
>语句调用。通常用于不带返回值的函数。这种情况下,被调用函数作为一个独立的语句出现在程序中。
>表达式调用。将被调用函数作为表达式的一部分进行调用,适用于被调用函数带有返回值的情况。
例:cout<<max(1,2);
>参数调用。被调用函数作为另一个函数的一个参数进行调用,例如:利用函数max计算三个数的最大值。
例: c=max(3,max(1,2));
>函数原型
在C++中,函数在使用之前要预先声明。这种声明在标准C++中称为函数原型(function prototype),函数原型给出了函数名、返回类型以及在调用函数时必须提供的参数的个数和类型。
函数原型的语法: <返回类型><函数名>(<形参列表>); 注:在函数原型后要又分号!!!
#直接使用函数定义的头部,并在后面加上一个分号。
#在函数原型声明中省略参数列表中形参变量名,仅给出函数名、函数类型、参数个数及次序。
注:在C++中,在调用任何函数之前,必须确保它已有原型声明。函数原型声明通常放在程序文件的头部,以使得该文件中所有函数都能调用它们。
>函数返回类型
#带参数的有返回值函数
定义形式:
<返回类型><函数名>(<形参列表>)
{
<语句序列>
}
例:阶乘函数。
#include<iostream>
using namespace std;
int fact(int n);
int main(){
cout<<fact(5)<<endl;
system("pause");
return 0;
}
int fact(int n)
{
int f=1;
while(n)
{
f*=n;
n--;
}
return f;
}
#不带参数的有返回值函数
定义形式:
<返回类型><函数名>()
{
<语句序列>
}
例:从键盘获取一个整数。
#include<iostream>
using namespace std;
int main(){
int x;
cout<<"please input a number!\n";
cin>>x;
system("pause");
return 0;
}
#带参数的无返回值函数
定义形式:
void <函数名>(<参数列表>)
{
<语句序列>
}
例:评定成绩,将百分制表示的成绩转换为五级平分。
#include<iostream>
using namespace std;
void printgrade(int score);
int main(){
printgrade(99);
system("pause");
return 0;
}
void printgrade(int score)
{
cout<<"your grade for the course is ";
if(score>=90)
cout<<"A"<<endl;
else if(score>=80)
cout<<"B"<<endl;
else if(score>=70)
cout<<"C"<<endl;
else if(score>=60)
cout<<"D"<<endl;
else
cout<<"F"<<endl;
}
#不带参数的无返回值函数
定义形式:
void <函数名>()
{
<语句序列>
}
例:在屏幕上用星号打印一个三角形。
#include<iostream>
using namespace std;
void printstar();
int main(){
printstar();
system("pause");
return 0;
}
void printstar()
{
for(int i=1;i<=10;i++)
{
for(int j=0;j<i;j++)
cout<<"*";
cout<<endl;
}
}