C++通过引用传递介绍及实例

158 阅读3分钟

C++ pass by reference

C++通过引用传递的介绍

在C++中,通过引用传递被定义为指作为参数传递给函数的值的地址,这意味着传递给函数的值的地址不是实际值,这种传递这种值的方法被称为通过引用传递,而我们传递实际值的方法是通过值传递。一般来说,通过引用传递也被称为通过调用函数中的参数所声明的值的地址传递,相对于被调用函数的正式参数,可以通过使用这种通过引用的方式修改参数的值,这就是使用值的地址。

在C++中通过引用传递的工作

在这篇文章中,我们将看到C++中的通过引用的方式。在C++中,我们看到简单的变量作为参数传递给函数,所以同样地,我们也可以使用这种通过引用的概念将参数的地址或引用作为参数传递给C++中的函数,当我们在程序中需要改变参数的值而不能通过值进行旁路时,这种方式非常重要。

如果我们知道了C++中的指针,通常就能理解旁证法;因此,旁证法被简单地定义为参数中数值地址的传递,这些参数是参考参数,每当函数被调用时,这些参数都被初始化为实际参数,被调用的函数可以修改这些旁证法的数值,但当我们在被调用函数的参数中使用旁证法时,我们不能修改这些数值。

C++中通过引用传递的例子

下面是C++中通过引用传递的例子。

例子#1

代码:

#include<iostream>
using namespace std;
void callee_func(int &i)
{
i = i+2;
}
int main()
{
int i = 0;
cout << "Value of i before it is called by the caller function is :" << i << endl;
callee_func(i);
cout << "Value of i now is :" << i << endl;
}

输出:

C++ pass by reference 1

在上面的程序中,首先,我们定义了一个函数,这是一个被调用的函数,它可以有一个普通的变量作为参数,那么它们就是形式参数,这里是 "int i",但在上面的例子中,我们传递的是一个引用,这意味着我们传递的是变量 "i "的地址,为了得到这个地址,我们在C++中声明它为"&i"。在callee_func中,我们有一个非常简单的计算,我们存储了i值的两次递增 "i = i +2"。然后我们定义main函数,它被认为是一个调用者函数,因为我们在main函数中调用了callee_func。

在main()函数中,我们初始化i = 0,然后调用callee_func(),我们传递了一个I的引用,我们可以看到调用者和callee_func都指向变量i,因为我们传递了一个i的引用,在调用callee_func()之后,i的值从0变为2。这样,在上面的截图中,我们可以看到上述程序的输出。通过这种方式,我们可以看到没有对i进行新的复制,因此可以节省复制的开销,这在创建程序时,当我们传递较大类的对象时,是非常有效的。

在C++中,我们有const关键字,它用于设置常量值,这意味着我们不能改变一个变量的值。因此,如果我们使用通过引用传递,并且不想改变或修改参数中传递的变量的值,那么我们可以在声明变量的数据类型之前使用这个 "const "关键字,这样就不会修改被调用函数中通过引用传递的变量的值。

例子#2

代码:

#include<iostream>
using namespace std;
void callee_func(const int& p, int& q)
{
//p = p * 2;
q = q + 1;
}
int main()
{
int p = 4, q = 4;
cout << "Value of p before it is called by the caller function is :" << p << endl;
cout << "Value of q before it is called by the caller function is :" << q << endl;
callee_func(p, q);
cout << "Value of p now is :" << p << endl;
cout << "Value of q now is :" << q << endl;
return 0;
}

输出:

C++ pass by reference 2

在上面的程序中,我们可以看到在callee_func()中我们声明了两个变量,其中一个使用了 "const "关键字作为引用,如 "const int &p "和另一个"&q"。所以我们试图通过在参数中传递这些变量的引用来打印变量p和q的值,它将修改这些值。但是,如果我们使用 "const "关键字,我们就不能修改,所以在上面的程序中,我们可以把变量 "p "变成常量,所以我们不能访问引用的变化值。因此,我们在使用函数参数中的传递引用之前和之后都要打印数值。因此,当你试图通过 "p "的引用来访问其值时,由于该值不能被改变,所以会出现错误。

总结

在这篇文章中,我们得出结论,C++中的通过引用定义为在被调用函数的参数中传递变量的地址,这被称为通过引用,这意味着我们可以修改值,即使这些变量在被调用函数和调用者函数中都是相同的。在这篇文章中,我们看到了一个简单的例子,即我们如何使用变量的地址或通过引用来获取作为参数传递的变量的最新值。在这篇文章中,我们还看到了如果我们不希望通过引用来修改值,这通常是一个非法调用这种通过引用的例子,如果我们试图引用这个常量的通过引用的变量,这也会给我们带来错误。