2019-04-05 【OK】C專題:類型重命名typedef

1. 類型重命名是什么?

給一個(gè)已有的數(shù)據(jù)類型聲明一個(gè)新名字。新名字是數(shù)據(jù)類型的別名。

2. 類型重命名怎么用?

2.1 基本類型重命名

類型重命名用法與變量定義相似,只是在前面加上typedef。

  • 語(yǔ)法

    typedef 類型 新名字;
    
    
  • 實(shí)例

    typedef unsigned char Byte;
    Byte b = 0x11; 
    typedef char* Str;
    Str str = "ABCDEFG";
    
    

創(chuàng)建平臺(tái)無(wú)關(guān)的數(shù)據(jù)類型,比如:size_tuint8_t、int8_t等。

2.2 結(jié)構(gòu)體/聯(lián)合體類型重命名

我們使用結(jié)構(gòu)體類型時(shí),需要使用struct關(guān)鍵字。typedef可以省略這個(gè)關(guān)鍵字。

  • 語(yǔ)法

    typedef struct {
        成員;
    } 類型名;
    
    
  • 實(shí)例

    typedef struct Point3D{
     int x;
     int y;
     int z;  
    } Point3D;
    Point3D p = {1,2,3};
    
    

    有時(shí)結(jié)構(gòu)體的類型名可以省略

    typedef struct{
     int x;
     int y;
     int z;  
    } Point3D;
    
    

    typedef定義結(jié)構(gòu)體同時(shí),可以定義結(jié)構(gòu)體指針。

    typedef struct{
     int x;
     int y;
     int z;  
    } Point3D,*pPoint3D;
    Point3D p = {1,2,3};
    pPoint3D q = &p;
    
    
  • 練習(xí)
    重新定義結(jié)構(gòu)體類型

    struct student{
      char  name[32];   //姓名
      int  age;     //年齡
      float  score;   //成績(jī)
    } student;
    
    

2.3 函數(shù)指針類型重命名

  • 語(yǔ)法

    typedef 返回類型 (* 函數(shù)指針類型)(參數(shù))
    
    
  • 實(shí)例

    int add(int a,int b){return a+b;}
    typedef int (*opt)(int,int); // 定義函數(shù)指針類型
    opt fpadd = &add; // 定義函數(shù)指針并賦值
    printf("%d\n",(*fpadd)(1,3));
    
    

3. 類型重命名有什么用?

  1. 為現(xiàn)有類型創(chuàng)建別名,定義易于記憶的類型名。
  2. 簡(jiǎn)化代碼

小禮物走一走,來(lái)簡(jiǎn)書關(guān)注我

贊賞支持

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容