在本教程中,您将通过简单易懂的示例,学习有关 C++ 语言中函数的全部知识。本教程将指导您如何定义函数以及调用函数的各种方式。
函数是一组接受输入、执行特定计算并返回结果的指令。函数是执行特定活动的语句集合。每个 C++ 程序都至少包含一个函数 main(),即使最简单的程序也可以声明额外的函数。您的代码可以分解为不同的函数。如何将代码分解为多个函数由您决定,但从概念上讲,每个函数通常应执行一项特定任务。函数声明会向编译器告知函数的名称、返回类型和参数。函数定义提供函数的主体。
函数主要有两种类型

标准库函数或内置函数是指编译器预先编写的代码集,用于执行特定任务。这些是已在头文件中定义的内置函数。例如,cin用于存储输入数据,cout用于显示内容,它们都是在头文件iostream中定义的标准库函数。还有许多其他函数,例如使用函数memcpy()将数据从一个内存区域复制到另一个内存区域,strcat()将两个字符串连接起来。通常,所有输入和输出操作(包括数学操作)都是通过库函数实现的。
而用户自定义函数则由程序员编写,并在程序执行过程中需要时使用。为了避免针对不同输入重复编写相同的代码,其思想是将经常或重复执行的任务组合在一起,并将其转换为可以调用的函数。
C++ 程序中的函数只有在正确指定以下三个重要方面时才算完整。它们是
函数声明在 C 语言中始终是更好的实践,因为它向编译器暗示程序稍后将使用某个函数。函数声明向编译器提供函数名称、函数中使用的参数数量以及函数类型等信息。声明函数时需要考虑的重要一点是,它必须全局声明,这意味着在 main() 函数之外。
函数声明可以被视为向编译器发出的一个通知,即将来程序中将使用一个函数。因此,它没有函数体。
函数声明的语法是
returnType function_name(dataType1, dataType2, ...);
函数声明中只需要参数的类型;
我们提供了一些函数声明的示例供您参考。
int max(int, int);
上面的声明是一个名为“max”的函数,它接受两个整数作为参数并返回一个整数值。
void swap(int, int);
swap 函数接受两个整数类型的参数,不返回任何值,因此返回类型为 void。
void display();
display 函数不接受任何参数,也不返回任何类型。
int *swap(int*,int);
一个函数,它接受一个 int 指针和一个 int 变量作为参数,并返回一个 int 类型的指针。
char *call(char b);
一个函数,它接受一个 char 和一个 int 作为参数,并返回一个整数。
通常建议在使用函数之前声明它。
注意:函数声明应在函数调用之前。
在 C++ 中,我们可以同时声明和定义事物,如上例所示。
此外,C++ 允许独立声明和定义函数,这在处理库函数时至关重要。头文件和库文件都包含库函数的声明。这是一个声明示例。
函数的一般形式是
return_type function_name( parameter list ) {
body of the function
}
C++ 函数定义由两部分组成:函数头和函数体。函数的组成部分如下:
函数可以将其返回值作为其返回类型。返回类型指定函数返回值的资料类型。有些函数执行所需的操作但不返回值。在这种情况下,返回类型是 void。
这表示函数的实际名称。函数名称和参数列表组成函数签名。
参数类似于占位符。当调用函数时,参数会传递一个值。此值称为实际参数或实参。参数列表描述了函数的参数的类型、顺序和数量。函数可以有也可以没有参数,因为参数是可选的。
函数体由多个语句组成,这些语句指定函数执行的操作。
下面显示了名为 max() 的函数的源代码。此函数返回两个参数 num1 和 num2 中较大的值。
// function returning the max between two numbers
int max(int num1, int num2) {
// local variable declaration
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
当您创建 C++ 函数时,您定义了函数必须完成的任务。您必须调用或调用函数才能使用它。
当程序调用函数时,程序控制权会传递给被调用的函数。当被调用的函数完成指定任务时,它会执行其 return 语句或到达其函数体的结束大括号,然后将程序控制权返回给主程序。
要调用函数,只需提供函数名称和适当的参数,如果函数返回值,您可以存储返回的值。
语法是
function_name(arg(s));
在 C++ 中,程序的执行从 main() 函数开始,函数调用就位于其中。当编译器遇到函数调用时,控制权会转移到相应的函数定义处,在那里执行为其设计的某些任务。当遇到 return 语句时,最终结果将返回给函数调用。如果不是,它会在函数本身中输出结果,并立即终止该函数,将控制权切换回 main() 函数。
根据上述 max() 函数示例,函数调用如下:
max(10, 50);
#include <iostream>
using namespace std;
// function declaration
int max(int n1, int n2);
int main() {
// local variable declaration:
int num1 = 500;
int num2 = 1000;
int ret;
// calling a function to get max value.
ret = max(num1, num2);
cout << "Max value is : " << ret << endl;
return 0;
}
// function returning the max between two numbers
int max(int n1, int n2) {
// local variable declaration
int result;
if (n1> n2)
result = n1;
else
result = n2;
return result;
}
我们保留了 max() 和 main() 函数并编译了源代码。执行最终可执行文件时的输出如下:
输出
Max value is : 1000
在上面的程序中,我们使用了函数 max,它有两个 int 参数。
然后我们传递 num1 和 num2 作为实参。这些值分别由函数参数 n1 和 n2 存储。

C++ 语言中的 return 语句通过终止其相应函数的执行来向调用函数返回值。要返回值,我们必须声明一个具有任何有效数据类型的函数,否则可以将其保留为 void。在我们之前的示例中,a 的值返回给 main 函数并分配给变量 arc,如下所示。

如果函数要接收参数,则必须声明接收参数值的变量。这些变量被称为函数的形参。
形式参数的作用类似于函数内部的其他局部变量,它们在进入时创建,在退出时销毁。
调用函数时,有三种方法可以将参数传递给函数:
注意:按值调用是 C++ 中传递参数的默认方法。这通常表示函数内部的代码不能更改调用函数时传递给函数的参数。在上面的示例中,在调用 max() 函数时使用了相同的方法。
请参阅函数参数教程以获取有关传递参数的更多信息。
main 函数被认为是一个特殊函数。main 函数是每个 C++ 程序必不可少的一部分。它充当程序的起点。main 函数将是计算机运行的第一行代码。
// Without Parameters
int main()
{
...
return 0;
}
// With Parameters
int main(int argc, char * const argv[])
{
...
return 0;
}
由于 main 函数具有参数选项,因此允许从命令行输入。
当您使用带参数的 main 函数时,它会将程序名称之后的所有字符组(以空格分隔)记录为名为 argv 的数组中的元素。
由于 main 函数的返回类型是 int,程序员必须始终在代码中包含 return 语句。返回的数字用于告知调用程序程序执行的结果。返回 0 表示一切按计划进行,即没有问题。