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;
这篇关于参数中的星号和与号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:参数中的星号和与号
基础教程推荐
- 在 C++ 中循环遍历所有 Lua 全局变量 2021-01-01
- 管理共享内存应该分配多少内存?(助推) 2022-12-07
- 为什么语句不能出现在命名空间范围内? 2021-01-01
- 如何使图像调整大小以在 Qt 中缩放? 2021-01-01
- 如何在不破坏 vtbl 的情况下做相当于 memset(this, ...) 的操作? 2022-01-01
- 从 std::cin 读取密码 2021-01-01
- 如何“在 Finder 中显示"或“在资源管理器中显 2021-01-01
- 使用从字符串中提取的参数调用函数 2022-01-01
- 为 C/C++ 中的项目的 makefile 生成依赖项 2022-01-01
- Windows Media Foundation 录制音频 2021-01-01