参数中的星号和与号

Both asterisk and ampersand in a parameter(参数中的星号和与号)
本文介绍了参数中的星号和与号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我正在读一本关于二叉搜索树的书,然后出现了一些奇怪的事情.我在函数参数中遇到了以下声明.

I am reading a book about Binary Search Tree and something weird came up. I came across the following declaration in a function parameter.

BinaryNode * & t

什么意思?t的地址指针?

What does it mean? Pointer of the address of t?

对于上下文,这是我看到的代码.私有insert 函数是公共insert 函数的辅助函数,私有insert 函数使用递归寻找合适的插入位置.>

For context, this is the code where I saw this. The private insert function is a helper function for public insert function, and private insert function looks for the right place to insert using recursion.

class BST
{
public:
   void insert(const Comparable & item)

private:
   BinaryNode *root;
   struct BinaryNode
   {
       Comparable element;
       BinaryNode *left;
       BinaryNode *right;
       BinaryNode(const Comparable & theElement, BinaryNode *lt, BinaryNode *rt) : 
          element(theElement), left(lt), right(rt) {}
   }
   void insert(const Comparable & item, BinaryNode * & t) const;
};

推荐答案

在你的表达式中 BinaryNode * &t)

            BinaryNode*                & t
           -------------              -----
            BinaryNode pointer        t is reference variable  

so t 是对 BinaryNode 类的指针的引用.

so t is reference to pointer of BinaryNode class.

t 的地址指针?

您对 C++ 中的 & 运算符感到困惑.给出一个变量的地址.但语法不同.

You are confused ampersand & operator in c++. that give address of an variable. but syntax is different.

& 在一些变量前面,如下所示:

ampersand & in front of some of variable like below:

BinaryNode b;
BinaryNode* ptr = &b;

但是下面的方式是用于引用变量(它的简单不是指针):

But following way is for reference variable (its simple not pointer):

BinaryNode b;
BinaryNode & t  = b; 

你的如下:

BinaryNode b;
BinaryNode* ptr = &b;
BinaryNode* &t  = ptr;  

这篇关于参数中的星号和与号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

相关文档推荐

Could I ever want to access the address zero?(我可以想访问地址零吗?)
C++ Access derived class member from base class pointer(C++ 从基类指针访问派生类成员)
Weird Behaviour with const_cast(const_cast 的奇怪行为)
Are pointer variables just integers with some operators or are they quot;symbolicquot;?(指针变量只是带有某些运算符的整数还是“符号?)
Modifying a char *const string(修改 char *const 字符串)
Modifying a const int in C++(修改 C++ 中的 const int)