typedef究竟是什么声明?

时间:2014-09-02 02:12:19

标签: c typedef

typedef struct nodetype node;
typedef node *link;

struct nodetype
{
 int  dat;
 link ptr;
};


typedef link *stack;

在上面的代码中,我对所有定义的内容感到有些困惑。 我理解typedef的作用,但我仍然想知道typedef node *link;究竟是什么定义了它是否定义了一个指向节点的指针?我对typedef link *stack;

也有同样的问题

3 个答案:

答案 0 :(得分:2)

typedef行没有创建任何内容。 typedef用于为类型提供新名称,它们不是变量的声明或定义,因此此时没有真正创建。

typedef node *link;

表示linknode *类型的另一个名称。只有当你使用它时:

link link_varialbe;

创建link类型的变量(与node *相同)。

答案 1 :(得分:1)

nodestruct nodetype类型的别名; linknode *类型的别名,这意味着它还是struct nodetype *类型的别名。

stacklink *类型的对象,与类型node **相同,与类型struct nodetype **相同。

这是一个如何使用typedef的可怕的示例,正是因为它造成了你的混乱。它没有充分的理由为同一件事创造了一堆不同的名字,它将一个指针隐藏在一个typedef名称中,这几乎总是坏的juju。

答案 2 :(得分:0)

typedef定义了给定类型的别名 它的优点是为代码元素赋予一些特殊含义。