C++基础(23)C++ 中引用的应用

218 阅读1分钟

我报名参加金石计划1期挑战——瓜分10万奖池,这是我的第23篇文章,点击查看活动详情

当变量被声明为引用时,它成为现有变量的替代名称。 变量可以通过在声明中加上“&”来声明为引用。

#include <iostream>
using namespace std;

int main()
{
	int x = 10;

	// ref 是对 x 的引用。
	int& ref = x;

	// x 的值现在更改为 20
	ref = 20;
	cout << "x = " << x << '\n';

	// x 的值现在更改为 30
	x = 30;
	cout << "ref = " << ref << '\n';

	return 0;
}

输出:

x = 20
ref = 30

应用 : 

1.修改函数中传递的参数:如果函数接收到一个变量的引用,它可以修改该变量的值。 例如,以下程序变量使用引用进行交换。

#include <iostream>
using namespace std;

void swap(int& first, int& second)
{
	int temp = first;
	first = second;
	second = temp;
}

int main()
{
	int a = 2, b = 3;
	swap(a, b);
	cout << a << " " << b;
	return 0;
}

输出:

 3 2

2.避免 大型结构的副本:想象一个必须接收大型对象的函数。 如果我们在没有引用的情况下传递它,则会创建它的新副本,这会导致 CPU 时间和内存的浪费。 我们可以使用引用来避免这种情况。

struct Student {
	string name;
	string address;
	int rollNo;
}

// 如果我们在下面的函数中删除 & ,就会创建一个学生对象的新副本。 我们使用 const 来避免函数中的意外更新,因为该函数的目的是仅打印 s。
void print(const Student &s)
{
	cout << s.name << " " << s.address << " " << s.rollNo
		<< '\n';
}

3.在 For Each 循环中修改所有对象:我们可以使用 for Each 循环中的引用来修改所有元素。

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

int main()
{
	vector<int> vect{ 10, 20, 30, 40 };

	// 如果我们使用参考,我们可以修改元素
	for (int& x : vect) {
		x = x + 5;
	}

	// 打印元素
	for (int x : vect) {
		cout << x << " ";
	}
	cout << '\n';

	return 0;
}

4. For Each Loop 避免 对象的副本:当对象很大时,我们可以在每个循环中使用引用来避免单个对象的副本。

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

int main()
{
	vector<string> vect{ "geeksforgeeks practice",
						"geeksforgeeks write",
						"geeksforgeeks ide" };

	// 我们通过使用引用来避免复制整个字符串对象。
	for (const auto& x : vect) {
		cout << x << '\n';
	}

	return 0;
}

如果大家在阅读我的文章的时候发现了一些错误,欢迎在评论区留言告诉我。我是一个正在学习C++的蒟蒻,关注我,我们一起加油。