鍍金池/ 教程/ C/ C typedef
C 輸入 & 輸出
C 標準庫 - < signal.h >
C 標準庫- < string.h >
C 循環(huán)
C 數(shù)據(jù)類型
C 字符串
C 標準庫 - < stdarg.h >
C 標準庫 - < math.h >
C 預(yù)處理器
C 存儲類
C 標準庫 - < locale.h >
C 指針
C 標準庫 - < assert.h >
C 結(jié)構(gòu)體
C 命令行參數(shù)
C 標準庫 - < ctype.h >
C 強制類型轉(zhuǎn)換
C 程序結(jié)構(gòu)
C typedef
C 遞歸
C 運算符
C 環(huán)境設(shè)置
C 函數(shù)
C 位域
C 標準庫 - < stddef.h >
C 數(shù)組
C 標準庫 - < errno.h >
C 標準庫 -參考手冊
C 可變參數(shù)
C 變量
C 錯誤處理
C 作用域規(guī)則
C 文件讀寫
C 內(nèi)存管理
C 基本語法
C 標準庫 - < stdio.h >
C 標準庫 - < time.h >
C 頭文件
C 判斷
C 標準庫 - < limits.h >
C 共用體
C 標準庫 - < setjmp.h >
C 常量
C 標準庫 - < float.h >
C 簡介
C 標準庫 - < stdlib.h >

C typedef

C 語言提供了 typedef 關(guān)鍵字,您可以使用它來為類型取一個新的名字。下面的實例為單字節(jié)數(shù)字定義了一個術(shù)語 BYTE

    typedef unsigned char BYTE;

在這個類型定義之后,標識符 BYTE 可作為類型 unsigned char 的縮寫,例如:

    BYTE  b1, b2;

按照慣例,定義時會大寫字母,以便提醒用戶類型名稱是一個象征性的縮寫,但您也可以使用小寫字母,如下:

    typedef unsigned char byte;

您也可以使用 typedef 來為用戶自定義的數(shù)據(jù)類型取一個新的名字。例如,您可以對結(jié)構(gòu)體使用 typedef 來定義一個新的數(shù)據(jù)類型,然后使用這個新的數(shù)據(jù)類型來直接定義結(jié)構(gòu)變量,如下:

    #include 
    #include 

    typedef struct Books
    {
       char  title[50];
       char  author[50];
       char  subject[100];
       int   book_id;
    } Book;

    int main( )
    {
       Book book;

       strcpy( book.title, "C Programming");
       strcpy( book.author, "Nuha Ali");
       strcpy( book.subject, "C Programming Tutorial");
       book.book_id = 6495407;

       printf( "Book title : %sn", book.title);
       printf( "Book author : %sn", book.author);
       printf( "Book subject : %sn", book.subject);
       printf( "Book book_id : %dn", book.book_id);

       return 0;
    }

當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:

    Book  title : C Programming
    Book  author : Nuha Ali
    Book  subject : C Programming Tutorial
    Book  book_id : 6495407

typedef vs #define

#define 是 C 指令,用于為各種數(shù)據(jù)類型定義別名,與 typedef 類似,但是它們有以下幾點不同:

  • typedef 僅限于為類型定義符號名稱,#define 不僅可以為類型定義別名,也能為數(shù)值定義別名,比如您可以定義 1 為 ONE。
  • typedef 是由編譯器執(zhí)行解釋的,#define 語句是由預(yù)編譯器進行處理的。

下面是 #define 的最簡單的用法:

    #include 

    #define TRUE  1
    #define FALSE 0

    int main( )
    {
       printf( "Value of TRUE : %dn", TRUE);
       printf( "Value of FALSE : %dn", FALSE);

       return 0;
    }

當上面的代碼被編譯和執(zhí)行時,它會產(chǎn)生下列結(jié)果:

    Value of TRUE : 1
    Value of FALSE : 0