typedef 作用是為一種資料類型定義一個新名字。這裡的資料類型包括內部數據類型(int,char等)和自定義的資料類型(struct等)。最簡單的一種用法就是用來替型別取另一個名字。它的語法如下

 
    typedef  資料型別  自訂名稱;
 
舉個實例來說如果我們要訂一個叫 height 的型別,我們就可以這樣寫:
 
    typedef  float height;
 
然後我們就可以在程式中,加上自已的型別,如:

    height y = 3.88;
    NSLog(@"height=%.2f",y);


程式就會輸出【height=3.88】。

這樣作的目的,主要是為了讓程式容易思考與閱讀。如果只是單純的一個取代,似乎還看不出來,但如果較複雜的結構就很明顯了。
 
 
舉個實例來說,我們可以設計一個結構叫距型 theRect ,  內有兩個參數,第一個參數是位置,第二個參數是大小。位置以 x,y 座標表示,大小以 width, height 表示,那我們就可以設計這樣一個結構:

 

typedef struct {  // 訂義位置  thePoint,其表示方法為 x,y 兩個浮點數來指示座標
    float x;
    float y;
}thePoint;

typedef struct {  // 訂義大小 theSize,其表示方法為 width,height 兩個浮點數
    float width;
    float height;
} theSize;

typedef struct {  // 訂義大小 theRect, 內有起點座標位置 origin(thePoint類型) 與大小 size(theSize類型) 
    thePoint origin;
    theSize size;
} theRect;

定義好型別之後,我們就可以建立一個型別,然後對它做設定,如

    theRect  myRect;
    myRect.origin.x = 0; //  myRect 的起始位置 y 座標為 0
    myRect.origin.y = 0; //  myRect 的起始位置 y 座標為 0
    myRect.size.width = 50; // myRect 的大小,寬為 50
    myRect.size.height = 60;  // myRect 的大小,高為 60
    NSLog(@"x:%.1f  y:%.1f  width:%.1f height:%.1f",myRect.origin.x,myRect.origin.y,myRect.size.width,myRect.size.height);

輸出:x:0.0 y:0.0 width:50.0 height:60.0

這樣子用   myRect.size.width  讀起來就像是   距形 . 大小 . 寬度  是不是很好閱讀呢?

在 iOS 程式設計中,有非常大量的使用自訂的型別訂義,像是 UIColor, CGPoint,CGSize 等資料型別,多半是這種概念建立的。

arrow
arrow

    shenfive 發表在 痞客邦 留言(1) 人氣()