2007年2月26日 星期一

typedef

typedef

1.
將資料型態定義成自己希望的識別字,方便撰寫程式.

比方說

typedef int number; // 表示number識別字和int相同.
int n; // 宣告一個int變數n.
number n; // 宣告一個number變數n,而number其實就是int.

又比方說有一個結構叫做record

struct record
{
int number;
struct record *next;
}

typedef struct record Node; // 表示Node識別字和struct record相同.

struct record record1; // 宣告一個record結構名為record1.

Node record1; // 宣告一個Node 結構名為record1,而Node 其實就是 struct record的意思.

除了省下了打字的力氣以外,由於不同的機器使用的資料型態都不太一樣,換機器跑程式時,只要修改typedef就好了,增加了C的可攜性.

[ 參考 ] http://home.educities.edu.tw/peterhuang1/Clan/CLanTypedef.htm

2.
struct t_Point
{
int x; int y;
}; // 注意,這裡最後一個分號不能省略

int main(int argc, char* argv[])
{
struct t_Point a, b;
// . . .
return 0;
}

顯然,這種方法沒有typedef更加直觀(在C++中,main函數第一行的struct關鍵字可以省略,但在標準C中,省略該關鍵字會出現編譯錯誤)。

此外,對於定義鏈接隊列中的結點,我們可以這樣實現:

typedef struct t_node
{
int Value;
struct t_node *next;
} Node;

當然也可以這樣定義:

typedef strcut t_node Node;
struct t_node
{
int Value;
Node *next;
};

[ 參考 ]

http://blog.csdn.net/acqy/archive/2004/10/10/130293.aspx

沒有留言: