在声明结构时使用 typdef 有什么区别?

Ant*_*y D 1 c++ struct typedef

可能的重复:
为什么我们要在 C 中如此频繁地对结构进行 typedef?
C++ 中“struct”和“typedef struct”的区别?

以下类型声明有什么区别?

struct Person
{
    int age;
};


typedef struct 
{
    int age;
}Person;
Run Code Online (Sandbox Code Playgroud)

我明白那个

struct 
{
    int age;
}Person;
Run Code Online (Sandbox Code Playgroud)

创建一个名为 person 的未命名结构的实例,其中

struct Person
{
    int age;
};
Run Code Online (Sandbox Code Playgroud)

声明了一个名为 person 的类型,但不是一个实例。但我仍然不明白 typedef 的作用。

for*_*ran 5

我认为这与在 C 中相同,typedef 创建了一个类型的别名……在你的第一种情况下,类型的名称是“ struct Person”,而在第二种情况下只是“ Person”。

通常,当您必须声明自引用结构(如列表)时,您会同时使用两者,因为 typedef 在定义结构之前不会生效(除非您进行前向声明),例如:

typedef struct node {
    void *data;
    struct node *next;
} TNode, *PTNode;
Run Code Online (Sandbox Code Playgroud)

所以现在您可以通过以下方式声明相同类型的变量:

struct node *node1;
TNode *node2;
PTNode node3;
Run Code Online (Sandbox Code Playgroud)

上面三个变量是一样的,都是指向节点结构的指针。