複習資料結構時,遇到一個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的結構

 

arrow
arrow
    全站熱搜

    李山姆's Blog 發表在 痞客邦 留言(0) 人氣()