C++ 函数
函数是一组语句,一起完成一个任务。每个C++程序至少有一个函数,即 main() ,而所有最简单的程序都可以定义额外的函数。
您可以将代码分为多个函数。您在不同函数之间如何划分代码完全取决于您,但从逻辑上讲,每个函数通常执行特定的任务。
函数 声明 告诉编译器有关函数的名称、返回类型和参数。函数 定义 提供了函数的实际体。
C++标准库提供了许多内置函数,您的程序可以调用这些函数。例如,函数 strcat() 用于连接两个字符串,函数 memcpy() 用于将一个内存位置复制到另一个位置,以及许多其他函数。
函数可以有不同的名称,比如方法或子例程或过程等。
定义函数
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;
}
函数声明
函数声明告诉编译器一个函数的名称以及如何调用该函数。函数的实际代码体可以单独定义。
函数声明包括以下几个部分:
return_type function_name( parameter list );
对于上面定义的max()函数,以下是函数声明:
int max(int num1, int num2);
参数名称在函数声明中并不重要,只需要它们的类型,因此以下也是有效的声明 –
int max(int, int);
在一个源文件中定义一个函数,并在另一个文件中调用该函数时,需要进行函数声明。在这种情况下,您应该在调用函数的文件的顶部声明该函数。
调用函数
在创建一个C++函数时,您会给出函数要执行的定义。要使用一个函数,您需要调用或调用该函数。
当程序调用一个函数时,程序控制被转移到所调用的函数。调用的函数执行定义的任务,当执行返回语句或者执行函数结束的固定括号时,将程序控制返回到主程序。
要调用一个函数,只需要将所需的参数和函数名一起传递,如果函数返回一个值,则可以存储返回的值。例如:
#include <iostream>
using namespace std;
// function declaration
int max(int num1, int num2);
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int ret;
// calling a function to get max value.
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
// 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;
}
我将max()函数与main()函数都保留,并编译了源代码。在运行最终的可执行文件时,会产生以下结果−
Max value is : 200
函数参数
如果一个函数要使用参数,它必须声明变量来接收这些参数的值。这些变量被称为函数的 形式参数 。
形式参数在函数内部与其他局部变量表现一样,在进入函数时创建,在退出函数时销毁。
在调用函数时,有两种方式可以将参数传递给函数:
编号 | 调用类型和描述 |
---|---|
1 | 按值传递 此方法将实际参数的值复制到函数的形式参数中。在这种情况下,函数内部对参数的更改不会影响实际参数。 |
2 | 按指针传递 此方法将实际参数的地址复制到形式参数中。在函数内部,使用该地址访问调用中使用的实际参数。这意味着对参数的更改会影响实际参数。 |
3 | 按引用传递 此方法将实际参数的引用复制到形式参数中。在函数内部,使用该引用访问调用中使用的实际参数。这意味着对参数的更改会影响实际参数。 |
默认情况下,C++使用 按值传递 来传递参数。一般来说,在函数内部无法修改用于调用函数的参数,而上述示例在调用max()函数时使用了相同的方法。
参数的默认值
当你定义一个函数时,你可以为每个最后的参数指定一个默认值。如果在调用函数时对应的参数留空,将使用这个值。
这可以通过使用赋值运算符并在函数定义中为参数赋值来实现。如果在调用函数时未传递该参数的值,则使用默认给定的值,但如果指定了值,则忽略默认值,使用传递的值。看下面的示例:
#include <iostream>
using namespace std;
int sum(int a, int b = 20) {
int result;
result = a + b;
return (result);
}
int main () {
// local variable declaration:
int a = 100;
int b = 200;
int result;
// calling a function to add the values.
result = sum(a, b);
cout << "Total value is :" << result << endl;
// calling a function again as follows.
result = sum(a);
cout << "Total value is :" << result << endl;
return 0;
}
当上述代码被编译和执行时,它会产生以下结果 –
Total value is :300
Total value is :120