0

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

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

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

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

4

2 回答 2

3

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

  1. 指针和引用有什么区别
  2. 为什么支持这两种数据类型

开始:

  1. 指针是指数据类型所在的内存位置。给定底层硬件,指针的大小是固定的,通常为 4 或 8 个字节 - 完全不管它实际上指向什么。此外,可以使用无效值 - 将指针传递给函数foo(reintepret_cast<int *>(0xDEADBEEF) );。相比之下,引用可确保基础数据有效 - 因为引用是对象本身的别名,并且不能被移动(假设引用的对象仍在范围内 -根据下面的注释进行编辑)。
  2. 有理由支持这两种类型第一个原因是确保传递给函数的数据是有效的 - 不会在测试指针有效性(不是NULL)上浪费周期。第二个原因是可以确定数据不仅指向有效位置,而且还指向有效数据对象。但主要原因是引用允许我们享受调用函数的好处,而无需通过值传递参数,但仍然保证参数引用有效值。
于 2013-07-07T12:07:40.717 回答
0

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

于 2013-07-07T12:50:09.830 回答