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 的作用。
我认为这与在 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)
上面三个变量是一样的,都是指向节点结构的指针。
| 归档时间: |
|
| 查看次数: |
1320 次 |
| 最近记录: |