【问题标题】:How to malloc a structure to a pointer that is already in another structure如何将结构分配到已经在另一个结构中的指针
【发布时间】:2015-06-25 02:52:38
【问题描述】:

我有一个包含两个指针和一个值的结构。它适用于二叉树。

 struct node 
 {
  int value;        //holds value of node
  node *lesschild;  //pointer to lesser value child
  node *greatchild; //pointer to greater value child
 };

这个结构是由一个名为addelement的函数中的指针指向的,现在我想malloc另一个由原始节点或结构中的一个指针指向的结构,我正在发生语法问题,我正在寻求帮助。

这就是我创建lesschild 指向的另一个结构的原因,该结构位于ptr 指向的结构中。

然后我尝试通过双指针更改新结构中的值。

ptr->lesschild = &malloc(sizeof(struct node));
ptr->lesschild->value = add;   

谁能告诉我我错过了什么?谢谢你的帮助

【问题讨论】:

  • 为什么lesschild是整数指针而不是节点指针?
  • 询问有关错误消息的问题。让您感到困惑的错误信息是什么?
  • lesschild 是一个节点指针,是一个错字

标签: c pointers data-structures struct


【解决方案1】:

你很接近,它是:

ptr->lesschild = (node *)malloc(sizeof(struct node)); 
ptr->lesschild->value = add;  // assuming add is an int

malloc 已经返回一个指针。我当然假设 lesschild 实际上是 node * 而你只是打错了。

【讨论】:

  • 好的,我试过了,现在我收到一条错误消息,上面写着“从 'void*' 到 'node*' 的无效转换”我应该提到这两行在一个不返回的函数中任何值。
  • 您需要将结果转换为node *,就像错误所说的那样。我将其添加到我的答案中。
  • @couchprogramer 停止使用 C++ 编译器!或者,更改您的标签,使其成为 C++ 问题。
  • 查看题为"Do I cast the result of malloc"的问题以获取更多信息...
  • 这看起来像家庭作业,所以我怀疑他可以选择他的编译器(甚至知道它的含义)。添加演员更容易!
猜你喜欢
  • 2013-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-13
  • 2019-03-18
  • 2023-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多