gpt4 book ai didi

c++ - 指向引用的指针和指向指针的引用之间的区别

转载 作者:IT老高 更新时间:2023-10-28 12:29:33 26 4
gpt4 key购买 nike

C++中指向引用的指针、指向指针的引用和指向指针的指针有什么区别?

哪一个应该比另一个更受欢迎?

最佳答案

首先,对指针的引用就像对任何其他变量的引用:

void fun(int*& ref_to_ptr)
{
ref_to_ptr = 0; // set the "passed" pointer to 0
// if the pointer is not passed by ref,
// then only the copy(parameter) you received is set to 0,
// but the original pointer(outside the function) is not affected.
}

指向引用的指针在 C++ 中是非法的,因为 - 与指针不同 - 引用只是一个概念,它允许程序员为其他东西制作 别名。指针是内存中的位置,它具有其他东西的地址,但引用不是。

如果您坚持将引用作为指针处理,那么最后一点可能还不是很清楚。例如:

int x;
int& rx = x; // from now on, rx is just like x.
// Unlike pointers, refs are not real objects in memory.
int* p = &x; // Ok
int* pr = ℞ // OK! but remember that rx is just x!
// i.e. rx is not something that exists alone, it has to refer to something else.
if( p == pr ) // true!
{ ... }

从上面的代码可以看出,当我们使用引用时,我们并不是在处理与它所引用的东西分开的东西。所以,引用的地址就是它所引用的地址。这就是为什么在所说的方面没有所谓的引用地址。

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

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