C++官网参考链接:Functions - C++ Tutorials (cplusplus.com)
功能
函数允许在代码段中构建程序来执行单独的任务。
在C++中,函数是一组有名称的语句,可以从程序的某个点调用这些语句。定义函数最常见的语法是:
type name( parameter1, parameter2, ...) { statements }
这里:
- type为函数返回值的类型。
- name是调用函数的标识符。
- parameters(任意数量):每个形参由一个类型后跟一个标识符组成,每个形参与下一个形参之间用逗号分隔。每个形参看起来非常像一个普通变量声明(例如:int x),实际上在函数中充当函数局部的普通变量。形参的目的是允许从调用函数的位置向函数传递实参。
- statements是函数体。它是由大括号{}包围的语句块,指定函数实际的功能。
让我们来看一个例子:
// function example
#include <iostream>
using namespace std;
int addition (int a, int b)
{
int r;
r=a+b;
return r;
}
int main ()
{
int z;
z = addition (5,3);
cout << "The result is " << z;
}
输出:
本程序分为addition和main两大函数。记住,无论它们的定义顺序如何,C++程序总是从调用main函数开始。实际上,main是唯一自动调用的函数,而其他函数中的代码只有在其函数从main(直接或间接)调用时才会执行。
在上面的例子中,main首先声明int类型的变量z,然后执行第一个函数调用:它调用addition。函数的调用遵循与函数声明非常相似的结构。在上面的例子中,对addition的调用可以与前面几行它的定义进行比较:
函数声明中的形参与函数调用中传递的实参有明确的对应关系。该调用将两个值5和3传递给函数;这些对应于为函数addition声明的形参a和b。
在main内部调用该函数时,控制将被传递给函数addition:这里,main的执行将停止,只有在addition函数结束时才会恢复。在调用函数时,两个参数(5和3)的值都被复制到函数内的局部变量整数a和整数b中。
然后,在addition中声明另一个局部变量int r;,并通过表达式r=a+b,将a+b的结果赋给r;在这种情况下,a = 5和b = 3,意味着8被分配给r。
函数中的最后一个语句:
return r;
结束函数addition,并将控制返回到调用函数的位置;在这种情况下:返回到函数main。在这个精确的时刻,程序恢复它在main()上的进程,返回到它被addition调用中断的同一点。另外,因为addition有一个返回类型,所以调用被计算为有一个值,这个值是在结束addition的返回语句中指定的值:在这种特殊情况下,局部变量r的值,在返回语句的时刻,它的值是8。
因此,对addition的调用是一个带有函数返回值的表达式,在这种情况下,该值8被赋给z。就好像整个函数调用(addition(5,3))被它返回的值(即8)取代了。
然后main简单地打印该值通过调用:
cout << "The result is " << z;
一个函数实际上可以在程序中被多次调用,它的实参自然不仅限于字面量:
// function example
#include <iostream>
using namespace std;
int subtraction (int a, int b)
{
int r;
r=a-b;
return r;
}
int main ()
{
int x=5, y=3, z;
z = subtraction(7,2);
cout << "The first result is " << z << '\n';
cout << "The second result is " << subtraction(7,2) << '\n';
cout << "The third result is " << subtraction(x,y) << '\n';
z= 4 + subtraction(x,y);
cout << "The fourth