繁体   English   中英

c++ 中的 *& 有什么作用

[英]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的引用类型签名混淆。 在您的情况下, Telem*

也可能意味着:如果在以下上下文中使用,则取消引用 object 的地址

#include <iostream>

int main()
{
    int x = 123;
    std::cout << *&x;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM