C++ 函数

函数是执行特定任务的代码块。

假设我们需要创建一个程序来创建一个圆并为其着色。我们可以创建两个函数来解决这个问题

  • 一个用于绘制圆的函数
  • 一个用于为圆着色的函数

将一个复杂的问题分解成更小的部分,使我们的程序易于理解和重用。

函数有两种类型

  1. 标准库函数:C++ 中预定义的
  2. 用户定义函数:由用户创建

在本教程中,我们将主要关注用户定义函数。


C++ 用户定义函数

C++ 允许程序员定义自己的函数。

用户定义函数将代码分组以执行特定任务,并将该代码组命名(标识符)。

当函数从程序的任何部分被调用时,它会执行函数体中定义的所有代码。


C++ 函数声明

声明函数的语法是

returnType functionName (parameter1, parameter2,...) {
    // function body   
}

下面是函数声明的示例。

// function declaration
void greet() {
    cout << "Hello World";
}

这里,

  • 函数名是 greet()
  • 函数的返回类型是 void
  • 空的括号表示它没有任何参数
  • 函数体写在 {} 内部

注意:我们将在本教程后面学习 returnTypeparameters


调用函数

在上面的程序中,我们声明了一个名为 greet() 的函数。要使用 greet() 函数,我们需要调用它。

下面是我们如何调用上面的 greet() 函数。

int main() {
     
    // calling a function   
    greet(); 

}
Working of C++ function
函数在 C++ 中的工作原理

示例 1:显示文本

#include <iostream>
using namespace std;

// declaring a function
void greet() {
    cout << "Hello there!";
}

int main() {

    // calling the function
    greet();

    return 0;
}

输出

Hello there!

函数参数

如上所述,函数可以声明参数(自变量)。参数是在声明函数时传递的值。

例如,让我们考虑下面的函数

void printNum(int num) {
    cout << num;
}

这里,int 变量 num 是函数参数。

我们在调用函数时向函数参数传递一个值。

int main() {
    int n = 7;
    
    // calling the function
    // n is passed to the function as argument
    printNum(n);
    
    return 0;
}

示例 2:带参数的函数

// program to print a text

#include <iostream>
using namespace std;

// display a number
void displayNum(int n1, float n2) {
    cout << "The int number is " << n1;
    cout << "The double number is " << n2;
}

int main() {
     
     int num1 = 5;
     double num2 = 5.5;

    // calling the function
    displayNum(num1, num2);

    return 0;
}

输出

The int number is 5
The double number is 5.5

在上面的程序中,我们使用了一个带有一个 int 参数和一个 double 参数的函数。

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

C++ function with parameters
带参数的 C++ 函数

注意:调用函数时传递的参数类型必须与函数声明中定义的相应参数匹配。


return 语句

在上面的程序中,我们在函数声明中使用了 void。例如,

void displayNumber() {
    // code
}

这意味着函数不返回任何值。

也可以从函数返回一个值。为此,我们需要在函数声明期间指定函数的 returnType

然后,可以使用 return 语句从函数返回一个值。

例如,

int add (int a, int b) {
   return (a + b);
}

这里,我们将 returnType 设置为 int 数据类型,而不是 void。这意味着该函数返回一个 int 值。

代码 return (a + b); 将两个参数的和作为函数值返回。

return 语句表示函数已结束。函数体中 return 之后的任何代码都不会执行。


示例 3:两个数相加

// program to add two numbers using a function

#include <iostream>

using namespace std;

// declaring a function
int add(int a, int b) {
    return (a + b);
}

int main() {

    int sum;
    
    // calling the function and storing
    // the returned value in sum
    sum = add(100, 78);

    cout << "100 + 78 = " << sum << endl;

    return 0;
}

输出

100 + 78 = 178

在上面的程序中,add() 函数用于查找两个数字的和。

我们在调用函数时传递了两个 int 字面量 10078

我们将函数返回的值存储在变量 sum 中,然后打印它。

Working of C++ Function with return statement
带 return 语句的 C++ 函数工作原理

请注意,sum 是一个 int 类型的变量。这是因为 add() 的返回值是 int 类型。


函数原型

在 C++ 中,函数声明的代码应放在函数调用之前。但是,如果我们想在函数调用后定义函数,我们需要使用函数原型。例如,

// function prototype
void add(int, int);

int main() {
    // calling the function before declaration.
    add(5, 3);
    return 0;
}

// function definition
void add(int a, int b) {
    cout << (a + b);
}

在上面的代码中,函数原型是

void add(int, int);

这向编译器提供了有关函数名称及其参数的信息。这就是为什么我们可以在函数尚未定义之前使用代码来调用函数。

函数原型的语法是

returnType functionName(dataType1, dataType2, ...);

示例 4:C++ 函数原型

// using function definition after main() function
// function prototype is declared before main()

#include <iostream>

using namespace std;

// function prototype
int add(int, int);

int main() {
    int sum;

    // calling the function and storing
    // the returned value in sum
    sum = add(100, 78);

    cout << "100 + 78 = " << sum << endl;

    return 0;
}

// function definition
int add(int a, int b) {
    return (a + b);
}

输出

100 + 78 = 178

上面的程序与示例 3 几乎相同。唯一的区别是这里函数是在函数调用之后定义的。

因此,我们在本例中使用了函数原型。


使用用户定义函数的优点

  • 函数使代码可重用。我们可以声明一次并多次使用它们。
  • 函数使程序更容易,因为每个小任务都被分解为一个函数。
  • 函数提高了可读性。

C++ 库函数

库函数是 C++ 编程中的内置函数。

程序员可以通过直接调用库函数来使用它们;他们不需要自己编写函数。

C++ 中一些常见的库函数包括 sqrt()abs()isdigit() 等。

为了使用库函数,我们通常需要包含定义这些库函数的头文件。

例如,为了使用数学函数如 sqrt()abs(),我们需要包含 cmath 头文件。


示例 5:C++ 程序计算数字的平方根

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    double number, squareRoot;
    
    number = 25.0;

    // sqrt() is a library function to calculate the square root
    squareRoot = sqrt(number);

    cout << "Square root of " << number << " = " << squareRoot;

    return 0;
}

输出

Square root of 25 = 5

在此程序中,sqrt() 库函数用于计算数字的平方根。

sqrt() 的函数声明定义在 cmath 头文件中。这就是为什么我们需要使用代码 #include <cmath> 来使用 sqrt() 函数。


另请阅读

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战