C递归typedef结构

时间:2015-08-02 09:05:52

标签: c struct typedef

我有以下工作代码。

#include <stdlib.h>
#include <stdio.h>

typedef struct Mystruct {
    int id;
    struct Mystruct** mystructures;
} Mystruct;

int main () {
    Mystruct* ms1 = malloc(sizeof(Mystruct));
    ms1->id = 1;

    Mystruct* ms2 = malloc(sizeof(Mystruct));
    ms2->id = 2;

    Mystruct* ms3 = malloc(sizeof(Mystruct));
    ms3->id = 3;

    ms1->mystructures = malloc(sizeof(Mystruct) * 2);
    ms1->mystructures[0] = (struct Mystruct*)ms2;
    ms1->mystructures[1] = (struct Mystruct*)ms3;

    printf("%d\n", ms1->mystructures[0]->id);
}

我不想使用Mystruct(struct Mystruct)来引用相同的数据类型。有没有办法像

中一样递归地使用typedefined Mystruct
typedef struct {
    int id;
    Mystruct** mystructures;
} Mystruct;

?这不会编译。感谢

2 个答案:

答案 0 :(得分:1)

首先定义你的typedef,然后定义struct:

typedef struct Mystruct Mystruct;

struct Mystruct {
    int id;
    Mystruct** mystructures;
} ;

答案 1 :(得分:1)

只有在定义结构时才必须使用“struct Mystruct”。一旦你将它定义为“Mystruct”,你可以在任何你想要的地方使用“Mystruct”。