我很难理解这个C结构中的typedef.
typedef struct node {
int value;
list rest;
} node;
typedef struct node *list;
Run Code Online (Sandbox Code Playgroud)
"node"typedef声明和"list"声明之间有什么区别?为什么列表前面是指针?"节点"也不是指针吗?为什么我不能简单地说"typedef struct node list"并省略星号?我到处搜寻,我找不到满意的答案.
第一个typedef定义node为别名struct node,允许您简单地引用它node而不是struct node每次都写入(C"常规"类型名称和struct名称存在于两个不同的名称空间中).它相当于:
struct node
{
int value;
struct node* rest;
};
typedef struct node node;
Run Code Online (Sandbox Code Playgroud)
typedef相反,第二个定义list为别名node *,即将类型定义list为指向node结构的指针.
(顺便说一下,我个人发现这是非常糟糕的风格:在typedefs中隐藏指针几乎总是一个坏主意;可以争辩说,列表中第一个元素的指针可以被识别为列表,但是使用list即使对rest指针是恕我直言不是很好)