c++ - 声明结构时使用 typdef 有什么区别?

标签 c++ struct typedef

<分区>

Possible Duplicates:
Why should we typedef a struct so often in C?
Difference between ‘struct’ and ‘typedef struct’ in C++?

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

struct Person
{
    int age;
};


typedef struct 
{
    int age;
}Person;

我明白了

struct 
{
    int age;
}Person;

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

struct Person
{
    int age;
};

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

最佳答案

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

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

typedef struct node {
    void *data;
    struct node *next;
} TNode, *PTNode;

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

struct node *node1;
TNode *node2;
PTNode node3;

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

关于c++ - 声明结构时使用 typdef 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1166729/

相关文章:

c++ - CMake 不生成 compile_commands.json

c++ - 提升图宽度优先搜索前身编译错误

c# - Idisposable 是否会在 struct 等堆栈项上调用(不使用 "Using"时)

c++ - STL + typedefs 与 OOP,最佳实践?

c++ - C 中的结构声明

c++ - 如何使用 Visual Studio 2010 构建 mpir-2.4.0?

c++ - 为什么 C++ 中的无限指针链不会导致内存爆炸?

c - 尝试声明在 C 中使用 typedef 定义的结构时出错

c - 从 C 中的结构中读取值

c++ - 虽然循环效率低下且无法正常工作