C語言 用typedef定義類型
typedef的使用形式如下:
typedef 標(biāo)準(zhǔn)類型名 別名;
例如:
typedef int INTEGER;
為標(biāo)準(zhǔn)類型int定義一個別名INTEGER,可以使用INTEGER來定義變量,如:
INTEGER a.b;
也可以為用戶定義的結(jié)構(gòu)體等自定義類型定義一個別名,例如:
typedef struct student
{
int no;
char name[10];
int score;
}STU;
這樣就為一個結(jié)構(gòu)體類型struct student定義了一個別名STU。程序中凡是需要定義student類型變量或數(shù)組時,都可以使用STU定義。如:
STU s1, s2;
定義兩個student結(jié)構(gòu)體型變量s1,s2。
STU s[10];
定義一個student結(jié)構(gòu)體型數(shù)組s,數(shù)組s中包含10個元素。
說明:
(1)用typedef只是給已有類型增加一個別名,并不能創(chuàng)造出新的類型。就如同人一樣,除大名外,可以再取一個小名、筆名、藝名等。不管使用哪個名,人還是這個人,并不能創(chuàng)造出另一個人來。
(2)typedef%#define的比較:typedef與#define有相似之處,都是用實際類型替代同義詞。 但它們實際是不一樣的,區(qū)別為typedef由編譯器在編譯時執(zhí)行的;而define是由預(yù)處理器在編譯預(yù)處理時處理的,而且只能作簡單的字符串替換。
(3)因為程序中使用typede可以定義一個更利于記憶的類型的別名,從而可以使程序更具有可讀性。
typedef除了可以為類型定義別名外,也可以為程序的書寫帶來其他便利。例如,需要定義大量的int型、長度為80的數(shù)據(jù):
int a [10];
int b [80];
int c [10];
…
這樣的定義非常繁瑣,這時就可以使用typedef簡化一下:
type int ARR[80];
ARR a.b.c;
這段代碼的含義是,定義一個ARR為整型數(shù)組,其元素個數(shù)為80,之后用ARR定義數(shù)組a、b、c,這三個數(shù)組長度都為30。
typede他可以用在定義指針中,如:
int *pl,p2;
可能程序員本意是想定義兩個int型指針,但實際定義出來則是是指針,而p2是普通的整型變量,可以使用typedef對整型指針進行定義:
typedef int* POINT;
POINT pl,p2,p3;
這種定義方式尤其在需要定義大量指針時,優(yōu)點更加突出。
點擊加載更多評論>>