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