我试图在一段代码中理解struct的用法。这让我非常困惑。看起来像typedef在同一个struct上使用了两次。请任何人都可以帮助我理解为什么这段代码有两次typedef。有没有办法简化这段代码。 非常感谢你的时间。
typedef struct {
city_t* cities;
int count;
cost_t cost;
} tour_struct;
typedef tour_struct* tour_t;
typedef struct {
tour_t* list;
int list_sz;
int list_alloc;
} stack_struct;
typedef stack_struct* my_stack_t;
答案 0 :(得分:2)
第一个typedef
为(匿名)结构提供了一个类型名称。第二个typedef
为另一个定义指针的类型。
tour_struct tour; // declares a struct.
tour_t ptr; // declares a pointer to a struct.
答案 1 :(得分:0)
第一个typedef以典型的方式用于在C中声明结构。 我猜你指的是第二个typedef: typedef tour_struct * tour_t; 之所以使用它是因为这里声明了指针的“另一个名字”(别名),以及上面声明的struct。这就是使用第二个typedef的原因。
答案 2 :(得分:0)
使用' *'在typedef中的已知类型之后,只需定义指向该类型的指针。
typedef stack_struct* my_stack_t;
将定义指向stack_struct的指针,并将其命名为my_stack_t