C++ 中的函数

原文:https://www.studytonight.com/cpp/functions-in-cpp

函数用于为程序提供模块化。使用函数创建应用程序使理解、编辑、检查错误等变得更加容易。


在 C++ 中使用函数的基本语法

下面是如何在 C++ 中定义一个函数,

return-type function-name(parameter1, parameter2, ...)
{
    // function-body
}
  • 返回类型:表示函数将返回什么。它可以是 int,char,一些指针甚至是一个类对象。可以有不返回任何东西的函数,它们用 void 来表示。
  • 函数名:是函数的名称,使用它被调用的函数名。
  • 参数:是保存调用函数时传递的参数值的变量。函数可能包含参数列表,也可能不包含参数列表。

    // function for adding two values
    void sum(int x, int y)
    {
        int z;
        z = x + y;
        cout << z;
    }
    
    int main()
    {
        int a = 10;
        int b = 20;
        // calling the function with name 'sum'
        sum (a, b);
    }
    

    这里,ab是两个变量,作为参数发送到函数sum,而xy参数,将保存ab的值,以执行函数内部所需的操作。

  • 函数体:是编写代码语句的部分。

声明、定义和调用函数

函数声明,是为了告诉编译器函数的存在。提到了函数的返回类型、名称和参数列表。函数体写在其定义中。让我们借助一个例子来理解这一点。

#include < iostream>
using namespace std;

//declaring the function
int sum (int x, int y);

int main()
{
    int a = 10;
    int b = 20;
    int c = sum (a, b);    //calling the function
    cout << c;
}

//defining the function
int sum (int x, int y)
{
    return (x + y);
}

这里,最初的功能是声明,没有身体。然后在main()函数里面是叫做,因为函数返回两个值的总和,变量c是用来存储结果的。然后,最后定义功能为,指定功能体。我们也可以,声明&一起定义函数,但是之后要在调用之前完成。


调用函数

函数是通过名字来调用的。如果函数没有参数,可以直接使用它的名称调用它。但是对于带参数的函数,我们有两种方法可以调用它们,

  1. 按值调用
  2. 引用调用

按值调用

在这种调用技术中,我们将存储或复制的参数值传递给函数的形式参数。因此,原始值不变,只有函数内部的参数发生变化。

void calc(int x);

int main()
{
    int x = 10;
    calc(x);
    printf("%d", x);
}

void calc(int x)
{
    x = x + 10 ;
}

Ten

在这种情况下,实际变量x没有改变,因为我们通过值传递参数,因此传递了 x 的副本,该副本被改变,并且该复制的值随着函数结束(超出范围)而被破坏。所以 main()中的变量 x 仍然有值 10。

但是我们可以通过使函数 calc() 返回值,并将该值存储在 x 中,来改变这个程序来修改原来的 x

int calc(int x);

int main()
{
    int x = 10;
    x = calc(x);
    printf("%d", x);
}

int calc(int x)
{
    x = x + 10 ;
    return x;
}

Twenty


引用调用

在这种情况下,我们将变量的地址作为参数传递。在这种情况下,形式参数可以作为引用或指针,在这两种情况下,它们都将改变原始变量的值。

void calc(int *p);

int main()
{
    int x = 10;
    calc(&x);     // passing address of x as argument
    printf("%d", x);
}

void calc(int *p)
{
    *p = *p + 10;
}

Twenty

注意:如果你没有指针的先验知识,一定要先研究指针。