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'類型的變量。