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
沒有留言:
張貼留言