[英]What does *& do in c++
在我的一个讲座中,我们有这个 function 将元素添加到非 stl 二进制三。 *& 到底是做什么的? 我知道 & 获取变量的地址,并且 * 允许我们访问特定地址的值。 他们在一起时有不同的含义吗? 另外,如果我在 main 中调用这个 function,我该怎么处理t
指针?
void add(int n, elem *&t)
{
if (t==NULL) //ако е достигнат празен указател или дървото е празно
{
t=new elem;
t->key=n;
t->left=t->right=NULL; //left и right са NULL, тъй като новият елемент няма наследници
} else //ако достигнатото място е заето от друг елемент
{
if (t->key<n) //ако новодобавения елемент е по-голям от текущия, то указателя се измества надясно,извиква се рекурсивно add с указателя вдясно
add(n,t->right);
else
{
if (t->key>n) //с цел да се елиминират повтарящи се елементи се прави втората проверка
add(n,t->left); // извиква се рекурсивно add с указателя вляво
}
}
}
这里也是结构:
struct elem
{
char key;
elem *left; //lqv naslednik
elem *right; // desen naslednik
}*root=NULL; // v sluchai che nqma koren
在您的情况下,它是elem*&
function 参数引用类型的一部分。 用于通过引用传递elem*
类型的 object。 指针就像任何其他变量/对象一样。 通过引用传递它们允许我们更改 function 中的指针值。
您的void add(int n, elem *&t)
elem* &t
中的 elem* &t 不会“获取变量的地址”。 这意味着 function 参数的类型是引用类型。 在您的情况下,它恰好是指针引用类型。
不要将地址操作符&
与T& param_name
的引用类型签名混淆。 在您的情况下, T
是elem*
。
这也可能意味着:如果在以下上下文中使用,则取消引用 object 的地址:
#include <iostream>
int main()
{
int x = 123;
std::cout << *&x;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.