如果我想创建一个可以容纳 2 个 double 值的变量 Point 并且我想避免每次使用它时都必须编写结构,我可以简单地使用:
typedef struct{
double x,y;
}Point;
但是当我想制作一个链表时,声明必须是这样的:
typedef struct Node Node; // (2)
struct Node{
int d;
struct Node * next;
};
不是这样的:
typedef struct{
int d;
struct Node * next;
}Node;
为什么声明必须这样,为什么要输入两次“Node”,见(2)。
最佳答案
typedef struct Node Node;
此语句指示编译器将 Node
视为与 struct Node
同名,这就是为什么它必须两次包含“Node”一词.
声明也不一定非要这样,第二个版本也是正确的。
struct
声明根本不需要包含 typedef
,它只需要为类型分配一个新名称并且通常与 struct 一起使用
声明,以避免需要一遍又一遍地键入单词 struct
。
关于c - 将结构用于链表与将它们用于点类型变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32102798/