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