为了账号安全,请及时绑定邮箱和手机立即绑定

Go 和 C++ 中指针和引用之间的逻辑区别?

Go 和 C++ 中指针和引用之间的逻辑区别?

Go
慕妹3146593 2021-06-07 17:32:18
无论提供了对指针的引用的便利性,例如无针解引用和特定于每个使用的规则,提供两种语言结构作为指针和引用是否有任何合乎逻辑的理由,或者它只是一种语法糖?(我猜最终的底层实现是编译器将对引用使用与暗示/检查由语言为引用定义的规则的指针相同的步骤。)注意:问题不在于语言对引用定义的规则,例如“引用不允许在 C++ 中分配 NULL 但在指针中”等。
查看完整描述

2 回答

?
呼唤远方

TA贡献1856条经验 获得超11个赞

你问两个问题,如果我理解正确的话

  1. 指针和引用有什么区别

  2. 为什么支持这两种数据类型

开始:

  1. 指针指的是内存中数据类型所在的位置。给定底层硬件,指针的大小是固定的,通常为 4 或 8 个字节 - 完全不管它实际上指向什么。此外,可以使用无效值将指针传递给函数 - foo(reintepret_cast<int *>(0xDEADBEEF) );。相比之下,引用确保基础数据是有效的——因为引用是对象本身的别名,并且不能移动(前提是被引用的对象仍在范围内——根据下面的评论进行编辑)。

  2. 有理由支持这两种类型。第一个原因是确保传递给函数的数据是有效的 - 不会在测试指针有效性(而不是NULL)上浪费周期。第二个原因是可以确定数据不仅指向有效位置,而且还指向有效数据对象。但主要原因是引用允许我们享受调用函数而不按值传递参数的好处,但仍然保证参数引用有效值。


查看完整回答
反对 回复 2021-06-21
?
哔哔one

TA贡献1854条经验 获得超8个赞

你应该问 Bjarne Stroustrup 为什么 C++ 有引用。在其他地方,他在第 7.7 节参考资料,C++ 编程语言,第四版第 189 页中提供了他的基本原理。《C++ 的设计与演化》第 86 卷。


查看完整回答
反对 回复 2021-06-21
  • 2 回答
  • 0 关注
  • 274 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信