1.1:基礎用法:
typedef int size_i;
則此時size_i就是int的別名。typedef並不建立新的型別。僅為現有型別新增一個同義字。可以在需要int的上下文中使用size_i.
1.2: typedef與struct結合使用:
typedef struct tagMyStruct
{
int iNum;
long lSize;
} MyStruct, *pMyStruct;
這段程式碼完成由兩個操作組成:
動作一:
struct tagMyStruct
};
定義了一個新的結構體型別。
tagMyStruct稱為“tag”,即“標籤”,實際上是一個臨時名字,struct關鍵字和tagMyStruct一起,構成了這個結構型別,不論是否有typedef,這個結構都存在。
用struct tagMyStruct varName來定義變數,但要注意,使用tagMyStruct
varName來定義變數是不對的,struct 和tagMyStruct合在一起才能表示一個結構型別。
動作二:
使用typedef為這個結構體起了個新別名。
typedef struct tagMyStruct MyStruct;
typedef struct tagMyStruct *pMyStruct;
因為MyStruct 是struct tagMyStruct的別名。 可以直接使用MyStruct來定義變數。
如: MyStruct
varName;
C語言允許在結構中包含指向它自己的指標,但上述程式碼的根本問題在於typedef的應用。程式碼分兩個過程:結構體的定義,結構體的新命名。
1.3:
typedef與enum結合使用:
typedef enum tagweekday{ sun, mon, tue, wed, thu, fri, sat }
WeekDay;
則enum tagweekday是一個新列舉型別。
WeekDay則是這個列舉型別的新名字。
與struct類似, enum
weekday組成一個型別。
1.1:基礎用法:
typedef int size_i;
則此時size_i就是int的別名。typedef並不建立新的型別。僅為現有型別新增一個同義字。可以在需要int的上下文中使用size_i.
1.2: typedef與struct結合使用:
typedef struct tagMyStruct
{
int iNum;
long lSize;
} MyStruct, *pMyStruct;
這段程式碼完成由兩個操作組成:
動作一:
struct tagMyStruct
{
int iNum;
long lSize;
};
定義了一個新的結構體型別。
tagMyStruct稱為“tag”,即“標籤”,實際上是一個臨時名字,struct關鍵字和tagMyStruct一起,構成了這個結構型別,不論是否有typedef,這個結構都存在。
用struct tagMyStruct varName來定義變數,但要注意,使用tagMyStruct
varName來定義變數是不對的,struct 和tagMyStruct合在一起才能表示一個結構型別。
動作二:
使用typedef為這個結構體起了個新別名。
typedef struct tagMyStruct MyStruct;
typedef struct tagMyStruct *pMyStruct;
因為MyStruct 是struct tagMyStruct的別名。 可以直接使用MyStruct來定義變數。
如: MyStruct
varName;
C語言允許在結構中包含指向它自己的指標,但上述程式碼的根本問題在於typedef的應用。程式碼分兩個過程:結構體的定義,結構體的新命名。
1.3:
typedef與enum結合使用:
typedef enum tagweekday{ sun, mon, tue, wed, thu, fri, sat }
WeekDay;
則enum tagweekday是一個新列舉型別。
WeekDay則是這個列舉型別的新名字。
與struct類似, enum
weekday組成一個型別。