C 語言基礎(chǔ)教程

C 語言流程控制

C 語言函數(shù)

C 語言數(shù)組

C 語言指針

C 語言字符串

C 語言結(jié)構(gòu)體

C 語言文件

C 其他

C 語言參考手冊(cè)

C 語言 typedef 關(guān)鍵字

C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取一個(gè)新的有意義的名字。也就是用于重新定義已經(jīng)存在的變量的名稱。

typedef 的語法

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

對(duì)結(jié)構(gòu)體使用typedef

以下為結(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與指針一起使用

我們也可以借助typedef為指針變量提供另一個(gè)名稱或別名。

例如,我們通常聲明一個(gè)指針,如下所示:

int* ptr;

我們可以重命名上述指針變量,如下所示:

typedef int* ptr;

在上面的語句中,我們聲明了int *類型的變量?,F(xiàn)在,我們只需使用' ptr'變量即可創(chuàng)建int *類型的變量,如以下語句所示:

ptr p1, p2 ;

在上面的語句中,p1p2是' ptr'類型的變量。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清