typedef在同一个struct上使用两次

时间:2014-11-23 16:15:06

标签: c struct

我试图在一段代码中理解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;

3 个答案:

答案 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