gpt4 book ai didi

c++ - int & 是什么意思

转载 作者:IT老高 更新时间:2023-10-28 22:00:13 27 4
gpt4 key购买 nike

一个 C++ 问题,

我知道

int* foo(void)

foo 将返回一个指向 int 类型的指针

怎么样

int &foo(void)

它返回什么?

非常感谢!

最佳答案

它返回一个对 int 的 reference。引用类似于指针,但有一些重要的区别。我建议您阅读指针、引用、对象和原始数据类型之间的区别。

“Effective C++”和“More Effective C++”(均由 Scott Meyers 撰写)对差异以及何时使用指针与引用进行了很好的描述。

编辑:有很多答案说“引用只是为了更容易处理指针而使用的语法糖”。他们肯定是不是

考虑以下代码:

int a = 3;
int b = 4;
int* pointerToA = &a;
int* pointerToB = &b;
int* p = pointerToA;
p = pointerToB;
printf("%d %d %d\n", a, b, *p); // Prints 3 4 4
int& referenceToA = a;
int& referenceToB = b;
int& r = referenceToA;
r = referenceToB;
printf("%d %d %d\n", a, b, r); // Prints 4 4 4

p = pointerToB 行改变了 p 的值,即它现在指向另一 block 内存。

r = referenceToB 做了一些完全不同的事情:它将 b 的值分配给 a 的值曾经所在的位置。它确实不会改变 rr 仍然是对同一 block 内存的引用。

区别很微妙,但非常重要。

如果您仍然认为引用只是指针处理的语法糖,那么阅读 Scott Meyers 的书籍。他可以比我更好地解释差异。

关于c++ - int & 是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4629317/

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