2012-11-22 146 views
3

我是否需要使用typedef才能构建递归结构?我试着用下面的代码没有成功:递归结构

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

为什么你使用关键字结构两次? – gvd

+5

C中不能直接递归结构;他们需要无限的存储空间。你可以有包含指向自己的结构。 –

+0

我试图在struct – user1843665

回答

9

要建立你不需要typedef递归结构。

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

这样的:

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

@ user1843665中定义struct,这就是堆栈溢出的用途。 :-) –

+0

哦,我明白了。我会在内部结构中通过以下方式引用data2: struct teste testing; testing.to_teste-> data2? – user1843665

+0

在使用'testing.to_teste-> data2之前,不要忘记'malloc()'to_teste'指针;'' –

4

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

相反,你可以有一个指向同一个结构的指针来解决你的目的。这是可行的,因为编译器知道指针的大小,并且结构现在具有确定的大小。