經常我們會遇到以下代碼
typedef struct node {
int ;
PNode next;
} PNode,*Linklist;
這樣可能看不懂讓我們來慢慢簡化。
typedef struct node {
int data ;
struct node * next;
} PNode,*LinkList;
再來
struct node {
int data;
struct node *next;
};
typedef struct node PNode;
typedef struct node *Linklist;
到這里想必大家都一目了然了,下面在說說個誤區
struct node {
int data;
struct node *next;
} PNode;
對比
typedef struct node {
int data ;
struct node * next;
} PNode;
這兩處的PNode分別是什么呢?
下面我這樣寫你估計就明白了
struct node { int data; struct node *next ;} PNode; // 等同于 struct node PNode;
typedef struct node {int data ;struct node * next;} PNode; // 等同于 typedef struct node PNode;
這里想必大家都明白了
struct node {
int data;
struct node *next;
} PNode;
// 這里面node是一個標記,而PNode是一個結構體變量
typedef struct node {
int data ;
struct node * next;
} PNode;
// 這里面node是一個標記,而PNode等同于 struct node
// 我們定義結構體變量的時候是用 strcut node 變量名;所以可以用 PNode 變量名;
// 當然結構體可以省略標記如:
struct {
int data;
struct node *next;
} PNode;
// 但是我們要給他個結構體變量名,不然就無法申明結構體變量了,這里以后只能用PNode這個結構體變量了,因為我們無法再聲明別的結構體變量(缺乏標記)
// 但是我們依然可以用typedef來定義這樣我們就解決了不能再次聲明結構體變量的煩惱了
typedef struct {
int data ;
struct node * next;
} PNode;
// 這里可以用PNode盡情的聲明了。