我有以下工作代码。
#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)
来引用相同的数据类型。有没有办法像
typedef struct {
int id;
Mystruct** mystructures;
} Mystruct;
?这不会编译。感谢
答案 0 :(得分:1)
首先定义你的typedef,然后定义struct:
typedef struct Mystruct Mystruct;
struct Mystruct {
int id;
Mystruct** mystructures;
} ;
答案 1 :(得分:1)
只有在定义结构时才必须使用“struct Mystruct”。一旦你将它定义为“Mystruct”,你可以在任何你想要的地方使用“Mystruct”。