包括 C、C++ 在内的一些语言支持指针。其他语言包括 C++、Java、Python、Ruby、Perl 和 PHP 都支持引用。从表面上看,引用和指针非常相似,它们都用来让一个变量提供对另一个变量的访问。 (推荐学习:go)

由于两者都提供了许多相同的功能,所以常常不清楚它们各自的内部机制有什么不同。在本文中,我将说明指针和引用之间的区别。

为什么这很重要

指针是 Go 语言的核心。大多数程序员都是在上面提到的一种语言的基础上学习 Go 的。因此,理解指针和引用之间的区别对于理解 Go 至关重要。

即使你使用过具有指针的语言,Go 对指针的实现也不同于 C 和 C++,因为它保留了引用的一些优秀属性,同时保留了指针的功能。

本文的其余部分旨在广泛地讨论引用的概念,而不是具体的实现。我们将使用 Go 作为指针的参考实现。

有什么不同?

指针变量存储的是另一个变量的地址。

引用变量指向另外一个变量。

为证明我们的观点,用 C++ 举个例子,它同时支持指针和引用。

int i = 3;2int *ptr = &i;3int &ref = i;

第一行定义了变量 i;第 2 行定义了一个指向变量 i 内存地址的指针 ptr;第 3 行定义了一个指向变量 i 的引用 ref。

不仅操作符不同,而且使用的方法也不同。对于指针,必须使用 * 操作符来解引用。对于引用,不需要任何操作符。据了解,你倾向于使用引用的变量。

继续我们的示例,下面两行代码都将把 i 的值更改为13。

ptr = 13;ref = 13;

你可能会问,如果我尝试直接访问变量 ptr 而不使用解引用。这就引出了指针和引用之间的第二个关键区别。指针可以重分配,而引用不能。换句话说,指针可以被分配另一个不同的地址。

更多相关文章

  1. golang 什么时候使用指针
  2. golang指针传递和值传递的区别是什么?
  3. golang 指针怎么用
  4. GOLANG 为什么还有指针
  5. golang 空指针怎么检查
  6. golang怎么判断指针是否为空
  7. 记一次因为共享变量的犯错误
  8. 关于Go指针的介绍
  9. golang中方法的receiver为指针和不为指针有什么区别

随机推荐

  1. 程序员到底该怎么给女朋友挑礼物
  2. 互联网骨干网间的连接(NAP和BGP)
  3. Android中自带的SQLite数据库
  4. 抄答案就是了,两套详细的设计方案,解决头疼
  5. 利用深度学习识别滑动验证码缺口位置
  6. 升级华为网络设备(路由器,防火墙和交换机),提
  7. 如何用一条命令将网页转成电脑 App
  8. 2021.1.18
  9. MySQL+Flask,在本地实现一个API接口。
  10. 房贷利率有没有套路?这是我见过最透彻的Py