gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:34:46 25 4
gpt4 key购买 nike

Regardless of provided convenience of references over pointers such as needleless of dereferencing and rules specific to use of each ,

is there any logical reason to provide two language constructs as pointers and references or is it just a syntactic sugar?

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

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

最佳答案

如果我没理解错的话,你问了两个问题

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

这里是:

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

关于c++ - Go和C++中指针和引用之间的逻辑区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17511701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com