typedef struct{}和typedef struct node{}有什么区别?
时间: 2024-03-24 11:30:00 浏览: 112
typedef struct{} 和 typedef struct node{} 的区别在于是否给结构体定义了一个别名。
当使用 typedef struct{} 的时候,没有给结构体定义任何别名,它仅仅是一个匿名的结构体声明。这种情况下,在后续的代码中无法直接使用该结构体类型,需要通过关键字 struct 和一个具体的变量名来声明结构体变量。
而当使用 typedef struct node{} 的时候,给结构体定义了一个别名,即 "node"。这样在后续的代码中就可以直接使用别名 "node" 来声明结构体变量,而不需要再使用关键字 struct。
相关问题
typedef struct和typedef struct node的区别
typedef struct 和 typedef struct node 的区别在于,前者定义了一个结构体类型的别名,而后者定义了一个结构体类型的别名,并且将这个别名指向一个结构体变量。具体来说,typedef struct 只是定义了一个新的类型名称,这个类型名称可以用来定义结构体变量,但是其本身并没有定义任何结构体变量。而 typedef struct node 则是定义了一个新的类型名称,同时将这个新类型名称指向了一个结构体变量。因此,当我们使用 typedef struct node 来定义结构体变量时,可以直接使用 node 作为结构体变量的类型名称。
:typedef struct binode huffman; struct binode{ int weight; int data, parent, lchild, rchild; }; typedef struct hnode huffmancode; struct hnode { int cd[maxsize]; int c; }; typedef struct node *lklist; struct node { int adjvex; lklist next; }; typedef struct gnode glink; struct gnode { int vex; struct node *firstlink; };
这段代码定义了四个结构体类型和一个指向结构体类型的指针。它们的具体含义如下:
1. `struct binode` 表示哈夫曼树的结点,包含了权值 `weight`、数据 `data`、父结点 `parent`、左孩子结点 `lchild` 和右孩子结点 `rchild`。
2. `struct hnode` 表示哈夫曼编码,包含了编码数组 `cd` 和编码长度 `c`。
3. `struct node` 表示链表结点,包含了相邻结点的下标 `adjvex` 和下一结点的指针 `next`。
4. `struct gnode` 表示图的顶点,包含了顶点编号 `vex` 和第一个邻接点的指针 `firstlink`。
`typedef` 关键字用来为结构体类型定义别名。比如,`typedef struct binode huffman` 为 `struct binode` 定义了一个别名 `huffman`,这样我们在程序中可以用 `huffman` 来代替 `struct binode`。同理,`typedef struct hnode huffmancode`、`typedef struct node *lklist` 和 `typedef struct gnode glink` 分别为 `struct hnode`、`struct node *` 和 `struct gnode` 定义了别名 `huffmancode`、`lklist` 和 `glink`。
阅读全文