我不知道如何使用引用调用将结构传递给以下代码中的函数?

I am not getting how the structure is being passed to a function in following code using call by reference?

就像这段代码,我不明白的是 'n1' [increment(n1) ] 是怎样的被传递给 'number& n2'[void increment(number& n2)]。 我们如何将 n1 传递给 &n2? 如果我的基础知识有误,请告诉我,因为我最近才开始学习 C 和 C++。

// C++ program to pass structure as an argument
// to the functions using Call By Reference Method

#include <bits/stdc++.h>
using namespace std;

struct number {
    int n;
};

// Accepts structure as an argument
// using call by reference method
void increment(number& n2)
{
    n2.n++;
}

void initializeFunction()
{
    number n1;

    // assigning value to n
    n1.n = 10;

    cout << " number before calling "
        << "increment function:"
        << n1.n << endl;

    // calling increment function
    increment(n1);

    cout << "number after calling"
        << " increment function:" << n1.n;
}

// Driver code
int main()
{
    // Calling function to do required task
    initializeFunction();

    return 0;

由于您将参数递增函数作为参考,因此当您将 n1 传递给它时,如下所示:

increment(n1);

它作为增量函数的引用传递,这基本上意味着 n1 的别名是用名称 n2 创建的 void increment(number& n2) 这意味着每当 n2 发生变化时,它也会反映在 n1 中(因为它们指的是同一个位置)

此外,将变量作为引用传递意味着允许函数修改变量,而无需通过声明引用变量来创建变量的副本。传递的变量和参数的内存位置相同,因此,对参数的任何更改都会反映在变量本身中。

所以,函数调用后: n1.n递增