2013-11-03 107 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; 
相關問題