引用不如指针强大?C++引用,为你深度解析

引用被称为变量的别名,它不能脱离被引用对象独立存在,这是在高级语言层面的概念和理解,并未解释引用的实现方式。常见错误说法是“引用”自身不是一个变量,甚至编译器可以不以引用分配空间。


 

实际上,引用本身是一个变量,只不过这个变量的定义和使用与普通变量有显著的不同。

当变量声明为引用时,它将成为现有变量的替代名称。变量可以通过在声明中添加‘&’来声明为引用。

#include<iostream>

using namespace std;

int main()

{

  int x = 10;

  // ref is a reference to x.

  int& ref = x;

  // Value of x is now changed to 20

  ref = 20;

  cout << "x = " << x << endl ;

  // Value of x is now changed to 30

  x = 30;

  cout << "ref = " << ref << endl ;

  return 0;

}

产出:

x = 20

ref = 30


 

申请:

1.修改函数中传递的参数

如果函数收到对变量的引用,它可以修改变量的值。例如,在以下程序中,使用引用交换变量。


 

2.避免复制大型结构

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


 

3.在每个循环中修改所有对象*

我们可以在每个循环中使用引用来修改所有元素


 

4.在每个循环中避免对象的复制

我们可以在每个循环中使用引用,以避免在对象较大时复制单个对象。


 

 

引用与指针

引用和指针都可以用来改变一个函数在另一个函数中的局部变量。这两种方法还可用于在将大对象作为参数传递给函数或从函数返回时保存对大对象的复制,以获得效率增益。

尽管存在上述相似之处,但引用和指针之间还是存在以下差异。

指针可以声明为无效,但引用永远不能无效。

例如

int a = 10;

void* aa = &a;. //it is valid

void &ar = a; // it is not valid

引用不如指针强大?

1)一旦创建了一个引用,它以后就不能用于引用另一个对象;它不能被重置。这通常是用指针来完成的。

2)引用不能为空。指针通常是空的,以表示它们没有指向任何有效的东西。

3)必须在声明时初始化引用。指针没有这样的限制。

由于上述限制,C++中的引用不能用于实现链接列表、树等数据结构。


 

好了,今天就讲到这里了。如果你想更好的提升你的编程能力,好好学习C/C++编程知识的话!那么你很幸运~

“点击链接”加入C语言/C++企鹅圈,这里还有一些你可能不知道的趣事分享哟。

原文地址:https://www.cnblogs.com/mu-ge/p/13858024.html