close
複習資料結構時,遇到一個C語言宣告如下:
typedef struct CSNode{ TElemType data; struct CSNode *firstchild,*rightsib; }MyNode , CSTree;
所以就搜尋了一下這要怎麼解釋呢??
首先,先來分析
1.typedef 的用法
// 定義一個已知資料型態的別名,也就是說可以用這個名稱代替設定的資料型態
typedef int NewINT; // 幫 int起了一個別名,叫做NewINT
OK,下一位
2.struct 的用法
//用來自定結構的語法 struct Node { int no; char Name[20] }; //定義了一個 Node結構(內含一個int資料型態的no變數及char陣列的Name)
OK,基本的用法如上所示,現在來點混搭風
3. typedef struct 用法
//下面的程式碼代表了什麼呢??
typedef struct Node { int no; char Name[20]; } NewNode;
其實可以分成兩個區塊來看
(1). 定義了一個Node的結構
struct Node { int no; char Name[20]; };
(2).幫這個 struct Node 起了一個別名 叫NewNode
typedef struct Node {...} NewNode;
所以就是 定義一個Node結構並且給了它一個等義的別名NewNode
OK,這樣題目的前半段清楚了,但 別名後面 接了個 , CSTree; 又是什麼意思呢??
4.定義別名後,宣告一個變數表示此別名結構
typedef struct CSNode { TElemType data; struct CSNode *firstchild,*rightsib; } MyNode , CSTree; //宣告了一個CSTree變數,其是一個 CSNode 結構,別名是 MyNode;
可以分解成下列的程式碼
struct CSNode { TElemType data; struct CSNode *firstchild,*rightsib; }; //定義CSNode結構 typedef struct CSNode MyNode //定義了struct CSNode 的別名 MyNode; MyNode CSTree; //宣告一個名叫CSTree的MyNode變數
本題的意義就是宣告了一個CSTree變數,其是一個 CSNode 結構,別名是 MyNode;
5.延伸題目
typedef struct { int no; int tel; } Mytel, MyPhone;
//宣告了MyPhone變數,其表示一個別名 Mytel的結構
全站熱搜