C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取一個(gè)新的有意義的名字。也就是用于重新定義已經(jīng)存在的變量的名稱。
typedef <existing_name> <alias_name>
在以上語法中,“ existing_name”是已經(jīng)存在的變量的名稱,而“ alias_name”是給現(xiàn)有變量賦予的另一個(gè)名稱。
例如,假設(shè)我們要?jiǎng)?chuàng)建一個(gè)類型為unsigned int的變量,那么如果我們要聲明此類型的多個(gè)變量,那么它將變得很繁瑣。為了克服這個(gè)問題,我們使用typedef關(guān)鍵字。
typedef unsigned int unit;
在上面的語句中,我們使用typedef關(guān)鍵字聲明了unsigned int類型的unit變量。
現(xiàn)在,我們可以通過編寫以下語句來創(chuàng)建unsigned int類型的變量:
unit a, b;
而不是寫:
unsigned int a, b;
您應(yīng)該已經(jīng)觀察到typedef關(guān)鍵字通過為已經(jīng)存在的變量,提供代替名稱來提供簡化的快捷方式。當(dāng)我們處理長數(shù)據(jù)類型(尤其是結(jié)構(gòu)聲明)時(shí),此關(guān)鍵字很有用。
讓我們通過一個(gè)簡單的實(shí)例來理解。
#include <stdio.h> int main() { typedef unsigned int unit; unit i,j; i=10; j=20; printf("i值為 :%d",i); printf("\nj值為 :%d",j); return 0; }
輸出結(jié)果
i值為 :10 j值為 :20
以下為結(jié)構(gòu)聲明:
struct student { char name[20]; int age; }; struct student s1;
在上面的結(jié)構(gòu)聲明中,我們通過編寫以下語句創(chuàng)建了學(xué)生類型的變量:
struct student s1;
上面的語句顯示創(chuàng)建了變量s1,但是該語句相當(dāng)長。為了避免這么大的聲明,我們使用typedef關(guān)鍵字,創(chuàng)建類型為student的變量。
struct student { char name[20]; int age; }; typedef struct student stud; stud s1, s2;
在上面的聲明中,我們聲明了struct student類型的變量stud。現(xiàn)在,我們可以在程序中使用stud變量來創(chuàng)建struct student類型的變量。
上面的typedef可以寫成:
typedef struct student { char name[20]; int age; } stud; stud s1,s2;
從上面的聲明中,我們得出結(jié)論,typedef關(guān)鍵字減少了代碼的長度和數(shù)據(jù)類型的復(fù)雜性。它還有助于理解程序。
讓我們看另一個(gè)示例,在其中使用typedef結(jié)構(gòu)聲明。
#include <stdio.h> typedef struct student { char name[20]; int age; }stud; int main() { stud s1; printf("輸入學(xué)生s1的詳細(xì)信息: "); printf("\n輸入學(xué)生姓名:"); scanf("%s", &s1.name); printf("\n輸入學(xué)生年齡:"); scanf("%d", &s1.age); printf("\n 學(xué)生姓名 : %s", s1.name); printf("\n 輸入學(xué)生年齡 : %d", s1.age); return 0; }
輸出結(jié)果
輸入學(xué)生s1的詳細(xì)信息: 輸入學(xué)生姓名: Peter 輸入學(xué)生年齡: 28 學(xué)生姓名 : Peter 學(xué)生年齡 : 28
我們也可以借助typedef為指針變量提供另一個(gè)名稱或別名。
例如,我們通常聲明一個(gè)指針,如下所示:
int* ptr;
我們可以重命名上述指針變量,如下所示:
typedef int* ptr;
在上面的語句中,我們聲明了int *類型的變量?,F(xiàn)在,我們只需使用' ptr'變量即可創(chuàng)建int *類型的變量,如以下語句所示:
ptr p1, p2 ;
在上面的語句中,p1和p2是' ptr'類型的變量。