【问题标题】:What is exact meaning of expression that is pointer and reference? [duplicate]指针和引用的表达式的确切含义是什么? [复制]
【发布时间】:2014-05-12 06:38:52
【问题描述】:

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

Node *&t;

Node 是结构体。为什么t需要同时是指针和引用?

问候

【问题讨论】:

  • 这是对指针的引用。如果您在类型名称旁边有 * 或 & ,则指针和引用会更好地阅读,因此它只是被视为单一类型而不是带有修饰符的类型。节点*& t;
  • 为什么要关闭,为什么要投反对票,请提出问题所在。我理解它的重复。但我没有找到确切的词。所以找不到答案。
  • 作为重复的问题关闭并不一定意味着您做错了什么 - 这只是为了保持网站清洁。我无法真正解释反对意见,但也许这与缺乏对基本语法的理解有关(如果你想学习一门语言,你应该从一本好书或课程开始,两者都应该足够详细地解释这一点- 是的,我知道可能有一些不好的书籍或课程无法充分解释)。

标签: c++ pointers data-structures syntax reference


【解决方案1】:

这是对指针的引用(从pointers to references are illegal in C++ 开始)。这意味着,t 代表某个变量,而该变量又是指向 Node 的指针。

没有一些代码,很难判断这个变量是做什么用的,但场景可能如下所示:

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

// (...)

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

【讨论】:

  • 指向引用的指针是非法的,因为它们没有任何意义。
  • 哦,这是否意味着我不使用 Node**,而是使用对指针的引用。
  • 是的,Node**Node* & 都可以在这种情况下使用,尽管第一个需要更多的错误检查,使用起来不太安全且不太方便。主要目标是以可以修改的方式将指针传递给函数。
  • @Jefffrey 指向引用的指针是非法的,因为引用不一定有地址。但是这是对指针的引用的原因并不是因为指向引用的指针是非法的;而是因为指向引用的指针是非法的。这是因为类型表达式中的引用和指针“运算符”具有从右到左的关联性。
猜你喜欢
  • 2010-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-28
  • 2016-09-25
  • 2015-03-11
  • 1970-01-01
  • 2011-12-14
相关资源
最近更新 更多