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_t、uint8_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. 類型重命名有什么用?
- 為現(xiàn)有類型創(chuàng)建別名,定義易于記憶的類型名。
- 簡(jiǎn)化代碼
小禮物走一走,來(lái)簡(jiǎn)書關(guān)注我
贊賞支持