跳到主要内容

引用

本课程将向您展示如何使用引用间接访问变量。

动机

假设您有一个将参数加倍的函数。

#include <iostream>

void double_number(int num)
{
num = num * 2;
}

int main()
{
int x = 5;
double_number(x);
std::cout << x;
}
输出(控制台)
5

但这行不通,因为只有 x 的值被写入了 num

这就是引用发挥作用的地方。

使用引用

您可以通过在要引用的变量类型后添加 & 来创建引用。

int var = 5;
int& ref = var; // ref is a int reference that refers to var

现在,如果您修改 refvar 也会被修改,因为 ref 就是 var

ref = 23;
std::cout << var; // Prints out 23

引用传递

现在让我们看看如何使用引用来解决我们的问题。

我们只需要让函数接受一个 int 引用 而不是 int

#include <iostream>

void double_number(int &num)
{
num = num * 2;
}

int main()
{
int x = 5;
double_number(x);
}
输出(控制台)
10

现在,当函数 double_number 接受一个引用时,num 将成为传递给函数的任何变量。这意味着当我们修改 num(它已经成为 x)时,我们也会间接修改 x

在基于范围的 for 循环中修改元素

在基于范围的 for 循环中也可以看到类似的问题。由于引用成为它所引用的变量,我们可以使用它来访问数组中的元素。

这是一个简单的数组

std::vector<int> arr = {2, 4, 6};

假设我们想给每个元素加 5,可以一个一个地加,但如果数组很大,就会变得很麻烦。
所以循环会来帮助我们!

for (int x : arr) 
{
x = x + 5;
}
std::cout << arr[0];
输出(控制台)
2

但不幸的是,上面的代码不起作用。这是因为只有元素的值被复制到 x 中,而不是元素本身。

这就是我们可以使用引用的地方,它们可以使数组的实际元素被复制到 x 中。

for (int& x : arr) 
{
x = x + 5;
}
std::cout << arr[0];
输出(控制台)
7

现在数组的每个元素都成功增加了五。

相应地使用引用

您只应在确实需要修改变量时才使用引用。如果您只需要值,请不要使用引用。

引用

本课程将向您展示如何使用引用间接访问变量。

动机

假设您有一个将参数加倍的函数。

#include <iostream>

void double_number(int num)
{
num = num * 2;
}

int main()
{
int x = 5;
double_number(x);
std::cout << x;
}
输出(控制台)
5

但这行不通,因为只有 x 的值被写入了 num

这就是引用发挥作用的地方。

使用引用

您可以通过在要引用的变量类型后添加 & 来创建引用。

int var = 5;
int& ref = var; // ref is a int reference that refers to var

现在,如果您修改 refvar 也会被修改,因为 ref 就是 var

ref = 23;
std::cout << var; // Prints out 23

引用传递

现在让我们看看如何使用引用来解决我们的问题。

我们只需要让函数接受一个 int 引用 而不是 int

#include <iostream>

void double_number(int &num)
{
num = num * 2;
}

int main()
{
int x = 5;
double_number(x);
}
输出(控制台)
10

现在,当函数 double_number 接受一个引用时,num 将成为传递给函数的任何变量。这意味着当我们修改 num(它已经成为 x)时,我们也会间接修改 x

在基于范围的 for 循环中修改元素

在基于范围的 for 循环中也可以看到类似的问题。由于引用成为它所引用的变量,我们可以使用它来访问数组中的元素。

这是一个简单的数组

std::vector<int> arr = {2, 4, 6};

假设我们想给每个元素加 5,可以一个一个地加,但如果数组很大,就会变得很麻烦。
所以循环会来帮助我们!

for (int x : arr) 
{
x = x + 5;
}
std::cout << arr[0];
输出(控制台)
2

但不幸的是,上面的代码不起作用。这是因为只有元素的值被复制到 x 中,而不是元素本身。

这就是我们可以使用引用的地方,它们可以使数组的实际元素被复制到 x 中。

for (int& x : arr) 
{
x = x + 5;
}
std::cout << arr[0];
输出(控制台)
7

现在数组的每个元素都成功增加了五。

相应地使用引用

您只应在确实需要修改变量时才使用引用。如果您只需要值,请不要使用引用。