我报名参加金石计划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++的蒟蒻,关注我,我们一起加油。