C++ 中的函数


2022年8月31日, 学习电子教程
2047

在本教程中,您将通过简单易懂的示例,学习有关 C++ 语言中函数的全部知识。本教程将指导您如何定义函数以及调用函数的各种方式。

函数是一组接受输入、执行特定计算并返回结果的指令函数是执行特定活动的语句集合。每个 C++ 程序都至少包含一个函数 main(),即使最简单的程序也可以声明额外的函数。您的代码可以分解为不同的函数。如何将代码分解为多个函数由您决定,但从概念上讲,每个函数通常应执行一项特定任务。函数声明会向编译器告知函数的名称、返回类型和参数。函数定义提供函数的主体。

函数有什么作用?

  • 我们可以通过使用函数来减少代码重复。如果软件功能需要在多个地方执行,我们构建一个函数并在任何需要的地方调用它,而不是重复编写相同的代码。这也有助于维护,因为如果将来对功能进行修改,我们只需要更改一个区域。
  • 函数有助于代码模块化。想象一个包含多行代码的大文件。如果代码分解为函数,它将变得非常易于阅读和使用。
  • 函数提供了抽象。例如,当我们使用库函数时,我们不需要考虑库函数内部是如何运行的。

函数类型

函数主要有两种类型

  1. 标准库
  2. 用户定义
Functions in C++

标准库函数内置函数是指编译器预先编写的代码集,用于执行特定任务。这些是已在头文件中定义的内置函数。例如,cin用于存储输入数据,cout用于显示内容,它们都是在头文件iostream中定义的标准库函数。还有许多其他函数,例如使用函数memcpy()将数据从一个内存区域复制到另一个内存区域,strcat()将两个字符串连接起来。通常,所有输入和输出操作(包括数学操作)都是通过库函数实现的。

用户自定义函数则由程序员编写,并在程序执行过程中需要时使用。为了避免针对不同输入重复编写相同的代码,其思想是将经常或重复执行的任务组合在一起,并将其转换为可以调用的函数。

函数的重要方面

C++ 程序中的函数只有在正确指定以下三个重要方面时才算完整。它们是

  1. 函数声明
  2. 函数定义
  3. 函数调用

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++ 允许独立声明和定义函数,这在处理库函数时至关重要。头文件和库文件都包含库函数的声明。这是一个声明示例。

如何在 C++ 中定义函数?

函数的一般形式是


return_type function_name( parameter list ) {
    body of the function
}
 

C++ 函数定义由两部分组成:函数头和函数体。函数的组成部分如下:

  • 返回类型

    函数可以将其返回值作为其返回类型。返回类型指定函数返回值的资料类型。有些函数执行所需的操作但不返回值。在这种情况下,返回类型是 void。

  • 函数名称:

    这表示函数的实际名称。函数名称和参数列表组成函数签名。

  • 参数

    参数类似于占位符。当调用函数时,参数会传递一个值。此值称为实际参数或实参。参数列表描述了函数的参数的类型、顺序和数量。函数可以有也可以没有参数,因为参数是可选的。

  • 函数体:

    函数体由多个语句组成,这些语句指定函数执行的操作。

C++ 函数的示例代码

下面显示了名为 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++ 中调用函数

当您创建 C++ 函数时,您定义了函数必须完成的任务。您必须调用或调用函数才能使用它。

当程序调用函数时,程序控制权会传递给被调用的函数。当被调用的函数完成指定任务时,它会执行其 return 语句或到达其函数体的结束大括号,然后将程序控制权返回给主程序。

要调用函数,只需提供函数名称和适当的参数,如果函数返回值,您可以存储返回的值。

语法是


function_name(arg(s));

Functions in C++

函数在 C++ 中的工作原理

在 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 参数。

然后我们传递 num1num2 作为实参。这些值分别由函数参数 n1n2 存储。

Functions in C++

C++ 中的函数返回语句

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

Functions in C++

函数参数

如果函数要接收参数,则必须声明接收参数值的变量。这些变量被称为函数的形参。

形式参数的作用类似于函数内部的其他局部变量,它们在进入时创建,在退出时销毁。

调用函数时,有三种方法可以将参数传递给函数:

  1. 传值调用
  2. 通过指针调用
  3. 通过引用调用

注意:按值调用是 C++ 中传递参数的默认方法。这通常表示函数内部的代码不能更改调用函数时传递给函数的参数。在上面的示例中,在调用 max() 函数时使用了相同的方法。

请参阅函数参数教程以获取有关传递参数的更多信息。

C++ 中的 main 函数

main 函数被认为是一个特殊函数。main 函数是每个 C++ 程序必不可少的一部分。它充当程序的起点。main 函数将是计算机运行的第一行代码。

main 函数的类型

  • 无参数的 main 函数
    
    // Without Parameters
    int main()
    {
      ...
      return 0;
    }
     
    
  • 带参数的 main 函数
    
    // With Parameters
    int main(int argc, char * const argv[])
    {
       ...
       return 0;
    }
    
     
    

由于 main 函数具有参数选项,因此允许从命令行输入。

当您使用带参数的 main 函数时,它会将程序名称之后的所有字符组(以空格分隔)记录为名为 argv 的数组中的元素。

由于 main 函数的返回类型是 int,程序员必须始终在代码中包含 return 语句。返回的数字用于告知调用程序程序执行的结果。返回 0 表示一切按计划进行,即没有问题。