Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 作为指针和引用的表达式的确切含义是什么?_C++_Pointers_Data Structures_Syntax_Reference - Fatal编程技术网

C++ 作为指针和引用的表达式的确切含义是什么?

C++ 作为指针和引用的表达式的确切含义是什么?,c++,pointers,data-structures,syntax,reference,C++,Pointers,Data Structures,Syntax,Reference,在查看二进制搜索树的代码时,我遇到了这个表达式 Node *&t; 其中Node是struct。为什么t需要同时作为指针和引用 这是对指针的引用(因为)。这意味着,t表示某个变量,而该变量又是指向节点的指针 如果没有一些代码,很难判断此变量的用途,但场景可能如下所示: void MoveNext(Node * & t) { t = t->next; } // (...) Node * current = head; MoveNext(current); //

在查看二进制搜索树的代码时,我遇到了这个表达式

Node *&t;
其中Node是struct。为什么
t
需要同时作为指针和引用


这是对指针的引用(因为)。这意味着,
t
表示某个变量,而该变量又是指向
节点的指针

如果没有一些代码,很难判断此变量的用途,但场景可能如下所示:

void MoveNext(Node * & t)
{
    t = t->next;
}

// (...)

Node * current = head;
MoveNext(current);
// Now current points to second item

它是对指针的引用。如果在类型名旁边有*或-,指针和引用的读取效果会更好,因此它只被视为单个类型,而不是带有修饰符的类型。节点*&t;为什么要关闭,为什么要否决,请提出问题所在。我理解它的副本。但我并没有找到确切的词来形容它。所以找不到答案。一个以重复形式结束的问题并不一定意味着你做错了什么——只是为了保持网站的整洁。我真的无法解释反对票的原因,但可能与缺乏对基本语法的理解有关(如果你想学习一门语言,你应该从一本好书或一门课程开始,这两本书或课程都应该足够详细地解释这一点——是的,我知道可能有一些不好的书或课程不能充分解释)。指向引用的指针是非法的,因为它们没有任何意义。哦,这是否意味着我没有使用节点**,而是使用指向指针的引用。是的,
Node**
Node*&
都可以在这种情况下使用,尽管第一个需要更多的错误检查,但不太安全,也不太方便使用。主要目标是以这样的方式将指针传递给一个函数,使其可以修改。@Jeffrey指向引用的指针是非法的,因为引用不一定有地址。但这是指针引用的原因并不是因为指向引用的指针是非法的;这是因为类型表达式中的引用和指针“运算符”具有从右到左的关联性。