【问题标题】:Data structure and algorithm in C++C++中的数据结构和算法
【发布时间】:2015-09-28 13:57:07
【问题描述】:

我有这两个功能:

void MakeNull_List(List L){
      L->Last=0;
}

void Empty_List(List L){
      return L.Last==0;
}

那么,谁能帮我解释一下这段代码? L->LastL.Last有什么区别?

【问题讨论】:

  • 你有一个void返回类型return L.Last==0;的函数?这段代码来自哪里?
  • 单个= 分配一个值,而== 测试是否相等。您可能想阅读a book about C++ 以了解更多信息。
  • 这段代码来自我文档的讲师。我不明白这个
  • 选择一本好的 C++ 书籍,它应该可以帮助你理解这类基本概念。
  • L->LastL.Last 至少有一个是错误的,但是如果没有看到List 的定义,就无法判断哪个。

标签: c++ algorithm data-structures


【解决方案1】:

我希望这个代码不是来自你的讲师,否则你应该寻找另一个......

遗憾的是,这段代码没有意义,因为它是错误的!但我认为你的意思是:

void MakeNull_List(List *L){    //* added
    L->Last=0;
}

bool Empty_List(List L){        //changed to bool
    return (L.Last==0);         //Please also use brackets here
}

第一个函数将最后一个元素设置为 0(NULL),不管它应该做什么?!?第二个函数检查最后一个元素是否为 0 (NULL)。

您的实际问题是:-> 用于访问指向对象的指针的属性,. 直接访问对象的属性。更多信息请阅读here

【讨论】:

  • 感谢您的分享:)
【解决方案2】:

然后您通过变量或引用访问对象,您应该通过. 对其字段进行寻址。 然后你有一个指向对象的指针,你应该事先取消引用它。所以,你可以写(*ptr).someFieldptr->someField

我想,你在void MakeNull_List(List *L) 定义中错过了*

【讨论】: