【问题标题】:Recursive struct [duplicate]递归结构[重复]
【发布时间】:2012-11-10 08:56:42
【问题描述】:

我需要使用typedef 来构建递归结构吗?我尝试使用以下代码但没有成功:

struct teste
{
    int data;
    int data2;
    struct teste to_teste;
};

【问题讨论】:

  • 为什么要使用两次关键字struct?
  • C 中不能有直接的递归结构;它们需要无限量的存储空间。您可以拥有包含指向自身的指针的结构。
  • 我试图在一个结构体中定义结构体

标签: c struct recursive-datastructures


【解决方案1】:

要构建递归结构,您不需要typedef

您必须将结构对象转换为struct pointer 对象。

像这样:

struct teste{
  int data;
  int data2;
  struct teste *to_teste;
};

【讨论】:

  • @user1843665 这就是堆栈溢出的用途。 :-)
  • 哦,我明白了。我将通过以下方式在内部结构中引用 data2: struct teste testing; testing.to_teste->data2 ?
  • 在使用testing.to_teste->data2;之前不要忘记malloc()to_teste指针
【解决方案2】:

你的内部不能有相同的结构。如果您这样做,那么该结构的大小将变得不确定。所以这是不允许的。

相反,您可以在其内部有一个指向相同结构的指针来解决您的目的。这将起作用,因为编译器知道指针的大小,并且结构现在具有确定的大小。

【讨论】:

    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 2013-11-17
    • 2015-10-10
    • 2015-09-07
    • 2021-03-11
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多