参数中的星号和&号
Both asterisk and ampersand in a parameter
本文关键字:参数 更新时间:2023-10-16
我正在读一本关于二叉搜索树的书,然后出现了一些奇怪的事情。我在一个函数形参中遇到了下面的声明:
BinaryNode * & t
这是什么意思?
t
的地址指针对于上下文,这是我看到这个的代码。私有insert
函数是公有insert
函数的辅助函数,私有insert
函数通过递归的方式寻找合适的插入位置。
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
所以t
是对BinaryNode类指针的引用。
t的地址指针?
您混淆了c++中的ampersand &
操作符。给出一个变量的地址。但是语法是不同的。
ampersand &
前面的一些变量如下:
BinaryNode b;
BinaryNode* ptr = &b;
但是下面的方法是用于引用变量(它简单的不是指针):
BinaryNode b;
BinaryNode & t = b;
和你的如下:
BinaryNode b;
BinaryNode* ptr = &b;
BinaryNode* &t = ptr;
这是对指针的引用。
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用