typedef struct nodetype node;
typedef node *link;
struct nodetype
{
int dat;
link ptr;
};
typedef link *stack;
在上面的代码中,我对所有定义的内容感到有些困惑。
我理解typedef
的作用,但我仍然想知道typedef node *link;
究竟是什么定义了它是否定义了一个指向节点的指针?我对typedef link *stack;
答案 0 :(得分:2)
typedef
行没有创建任何内容。 typedef
用于为类型提供新名称,它们不是变量的声明或定义,因此此时没有真正创建。
typedef node *link;
表示link
是node *
类型的另一个名称。只有当你使用它时:
link link_varialbe;
创建link
类型的变量(与node *
相同)。
答案 1 :(得分:1)
node
是struct nodetype
类型的别名; link
是node *
类型的别名,这意味着它还是struct nodetype *
类型的别名。
stack
是link *
类型的对象,与类型node **
相同,与类型struct nodetype **
相同。
这是一个如何使用typedef的可怕的示例,正是因为它造成了你的混乱。它没有充分的理由为同一件事创造了一堆不同的名字,和它将一个指针隐藏在一个typedef名称中,这几乎总是坏的juju。
答案 2 :(得分:0)
typedef
定义了给定类型的别名
它的优点是为代码元素赋予一些特殊含义。