📅  最后修改于: 2023-12-03 15:14:03.434000             🧑  作者: Mango
C++ 中的参考是一个非常常用的概念,是为了方便程序员访问其他变量或对象而创建的。它是一种特殊的类型,可以被用作参数传递,函数返回值和其他变量的别名等。
C++ 中的参考(Reference)是一种在定义时创建的别名,它与指针类似,但有一些不同之处。它被定义为一种类型,可以用来访问其他变量或对象。在创建参考时,必须初始化它,因为参考不能是空的,也不能被修改为指向其他对象。
int a = 10;
int &b = a;
在上面的代码片段中,我们可以看到变量b
是变量a
的参考。它们的值是相同的,但是我们可以使用b
来修改变量a
的值,因为b
和a
是同一对象的别名。
参考和指针类似,但有一些区别。其中最重要的区别之一是,指针可以为空(NULL
),而参考不能。另一个区别是,指针可以被重新赋值指向其他对象,而参考的目标对象不能被修改。
int *p = nullptr;
int &r = x; // 有效,r 是 x 的别名
int &s; // 错误,参考必须初始化
p = &x; // 有效,p 指向 x
p = nullptr; // 有效,p 指向空
r = y; // 有效,把 x 的值改为 y
r = nullptr; // 错误,参考不能被修改为指向空
在函数中使用参考是一个常见的做法,因为它可以节省内存,同时也使代码更加清晰。
void swap(int &x, int &y) {
int temp = x;
x = y;
y = temp;
}
int a = 10, b = 20;
swap(a, b);
在上面的代码片段中,我们声明了一个函数swap
,它采用两个整数的参考作为参数,并交换它们的值。在调用该函数时,我们传递两个整数的名称作为参数,而不是它们的值。
参考也可以作为函数的返回值,这在某些情况下非常有用。
int &max(int &x, int &y) {
if (x > y) {
return x;
} else {
return y;
}
}
int a = 10, b = 20;
int &c = max(a, b);
在上面的代码片段中,我们声明了一个函数max
,它采用两个整数的参考作为参数,并返回其中的较大值。在调用该函数时,我们传递两个整数的名称作为参数,而不是它们的值,并将返回值保存在参考变量中。
参考是 C++ 中一个非常有用的概念,它可以方便程序员访问其他变量或对象,提高程序的效率和可读性。它与指针类似,但有一些不同之处,如不能被赋值为空,不能作为左值等。在函数中使用参考是一个常见的做法,并且可以作为函数的返回值。