2013-11-03 61 views
0

为什么在定义struct类型时使用Node(.. Node {..),如下所示,给出了编译时错误。typedef struct用于定义

typedef struct node Node; 

Node{ 
    int data; 
    Node *next; 
}; 

有一个非常基本的概念让我感到困惑,请告诉我或给我介绍一个相关的链接。

+0

能否请你修改你的第一句,以明确你希望它做的,或者是什么呢? – glglgl

+1

这是无效的,因为它无效。结构类型的定义必须以关键字'struct'开头。这里的所有都是它的。 – AnT

+0

好的,如果这是真的。谢谢! –

回答

1

Typedef用于为别的类型提供别名。它不是一个宏,它不会在使用地点取代某些东西。

正确的定义可能是:

typedef struct node { 
    int data; 
    struct node* next; 
} Node; 
1

最起码,你需要它说

typedef struct node Node; 

struct Node{ 
    int data; 
    Node *next; 
}; 
0

但是,你可以做到这一点:

typedef struct { 
    int data; 
    struct Node *next; 
}Node; 

现在您可以轻松地创建您拥有的结构体Node的实例

Node node, *pNode; 

哪里nodestruct Node类型的新变量的名称:通过创建。
*pNode是指向相同,通过初始化:

pNode = &node; 
相关问题