typedef 關鍵字。typedef 現有型別 新型別名 ;
existing_type 是任何型別,無論是基本型別還是複合型別,new_type_name 是賦予該型別的新名稱的識別符號。 |
|
C、WORD、pChar 和 field,它們分別是 char、unsigned int、char* 和 char[50] 的別名。一旦定義了這些別名,它們就可以在任何宣告中使用,就像任何其他有效型別一樣。 |
|
|
|
|
|
typedef 定義的別名和用 using 定義的別名在語義上是等價的。唯一的區別是 typedef 在模板領域有某些限制,而 using 沒有。因此,using 更通用,儘管 typedef 歷史更長,並且在現有程式碼中可能更常見。typedef 和 using 都不會建立新的、獨立的資料型別。它們只為現有型別建立同義詞。這意味著上面用 WORD 型別宣告的 myword,其型別也可以被認為是 unsigned int;這並不重要,因為兩者實際上都指向同一個型別。int 的別名來指代特定型別的引數,而不是直接使用 int,可以在將來的版本中輕鬆地將該型別替換為 long(或其他型別),而無需更改每個使用它的地方。
union type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
.
.
} object_names;
|
type_name 標識的聯合型別,其中所有成員元素都佔用記憶體中相同的物理空間。此型別的大小是其最大成員元素的大小。例如: |
|
mytypes),它有三個成員: |
|
|
|
int 型別的大小為 4 位元組,short 型別的大小為 2 位元組,那麼上面定義的聯合允許訪問同一組 4 位元組:mix.l、mix.s 和 mix.c,我們可以根據我們想要如何訪問這些位元組來使用它們:就像它們是 int 型別的單個值,或者像它們是兩個 short 型別的值,或者分別是一個 char 元素的陣列。該示例在聯合中混合了型別、陣列和結構體,以演示訪問資料的不同方式。對於小端系統,這個聯合可以表示為:
| 帶有常規聯合的結構體 | 帶有匿名聯合的結構體 |
|---|---|
|
|
price),而在第二種型別中則沒有。這影響了訪問此型別物件的成員 dollars 和 yen 的方式。對於第一種型別的物件(帶有常規聯合),訪問方式為: |
|
|
|
dollars 和 yen 實際上共享相同的記憶體位置,因此它們不能用於同時儲存兩個不同的值。price 可以用 dollars 或 yen 設定,但不能同時使用兩者。
enum type_name {
value1,
value2,
value3,
.
.
} object_names;
|
type_name 的型別,它可以取 value1、value2、value3 等中的任何一個作為值。該型別的物件(變數)可以直接例項化為 object_names。colors_t 的新變數型別來儲存顏色,其宣告如下: |
|
color_t 的變數可能取的值是在大括號內列出的列舉成員。例如,一旦聲明瞭 colors_t 列舉型別,以下表達式將是有效的: |
|
enum 宣告的列舉型別的值可以隱式轉換為整數型別。事實上,這樣的 enum 的元素在內部總是被賦予一個等效的整數數值,並且它們可以被隱式轉換為該數值。如果沒有另外指定,第一個可能值對應的整數值為 0,第二個為 1,第三個為 2,依此類推……因此,在上面定義的 colors_t 資料型別中,black 等效於 0,blue 等效於 1,green 等效於 2,依此類推…… |
|
months_t 的變數 y2k 可以包含從 january 到 december 的 12 個可能值中的任何一個,這些值等效於 1 到 12 之間的整數值(而不是 0 到 11,因為 january 已被設為等於 1)。enum 型別,它們既不能隱式轉換為 int,其列舉成員值也不是 int 型別,而是 enum 型別本身,從而保持了型別安全。它們使用 enum class(或 enum struct)而不是簡單的 enum 來宣告。 |
|
enum class 型別的每個列舉成員值都需要限定在其型別作用域內(這實際上也適用於 enum 型別,但只是可選的)。例如: |
|
enum class 宣告的列舉型別對其底層型別也有更多的控制;它可以是任何整型資料型別,如 char、short 或 unsigned int,這主要用於確定該型別的大小。這透過在列舉型別名稱後加冒號和底層型別來指定。例如: |
|
Eyecolor 是一個獨立的型別,其大小與 char 相同(1 位元組)。資料結構 | 目錄 | 類 (I) |