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

无论提供了对指针的引用的便利性,例如无针解引用和特定于每个使用的规则,

提供两种语言结构作为指针和引用是否有任何合乎逻辑的理由,或者它只是一种语法糖?

(我猜最终的底层实现是编译器将对引用使用与暗示/检查由语言为引用定义的规则的指针相同的步骤。)

注意:问题不在于语言对引用定义的规则,例如“引用不允许在 C++ 中分配 NULL 但在指针中”等。


慕妹3146593
浏览 275回答 2
2回答

呼唤远方

你问两个问题,如果我理解正确的话指针和引用有什么区别为什么支持这两种数据类型开始:指针指的是内存中数据类型所在的位置。给定底层硬件,指针的大小是固定的,通常为 4 或 8 个字节 - 完全不管它实际上指向什么。此外,可以使用无效值将指针传递给函数 -&nbsp;foo(reintepret_cast<int *>(0xDEADBEEF) );。相比之下,引用确保基础数据是有效的——因为引用是对象本身的别名,并且不能移动(前提是被引用的对象仍在范围内——根据下面的评论进行编辑)。有是有理由支持这两种类型。第一个原因是确保传递给函数的数据是有效的 - 不会在测试指针有效性(而不是NULL)上浪费周期。第二个原因是可以确定数据不仅指向有效位置,而且还指向有效数据对象。但主要原因是引用允许我们享受调用函数而不按值传递参数的好处,但仍然保证参数引用有效值。

哔哔one

你应该问 Bjarne Stroustrup 为什么 C++ 有引用。在其他地方,他在第 7.7 节参考资料,C++ 编程语言,第四版第 189 页中提供了他的基本原理。《C++ 的设计与演化》第 86 卷。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go