C++ 定義了數種複合資料型態 (compound type)
- 參考 (reference)
- 列舉 (enumeration)
- 匿名列舉 (anonymous enumeration)
- 陣列 (array)
- 字元陣列 (character array)
- 指標 (pointer)
- 結構 (structure)
- 聯合 (union)
參考
參考是變數 (variable) 的別名 (alias) ,定義參考使用 & 運算子 (operator) ,例如
int a = 22; int &aRef = a;
這樣 aRef 就會是 a 別名。
列舉
列舉是一組整數常數,定義列舉使用關鍵字 (keyword) enum ,例如
enum Day {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
匿名列舉則是不帶型態識別字 (identifier) 的列舉,例如
enum {Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday};
兩者的主要差別列舉可用識別字另外定義屬於該列舉型態的變數,匿名列舉則不行,例如
Day today = Wednesday;
陣列
陣列是相同資料型態 (data type) 的一組連續數值,裡頭每個數值被稱為元素 (element) ,可依索引值設定或存取指定元素。使用陣列前須宣告型態並且指定陣列大小,例如下面 a 會是個有 5 個元素的整數陣列
int a[5];
亦可直接用大括弧初始化陣列元素,這樣就不需要指定陣列大小,例如
int a[] = {1, 2, 3, 4, 5};
陣列名稱存放的是陣列起始的記憶體位址,至於字元陣列比較特別,可用雙引號直接設定初值,亦可直接用字元陣列名稱存取整個陣列字元陣列,例如
char a[] = "12345"; // "12345" 等於 {'1', '2', '3', '4', '5'} std::cout << "a:" << a << std::endl; // 印出 a: 12345
指標
指標是儲存記憶體位址的資料型態,使用指標需要宣告所屬的資料型態及運用 * 運算子,另外用 & 取得位址。例如
int a = 22; int *aPtr = &a;
這樣 aPtr 就會儲存 a 的記憶體位址。如果要用指標變數存取所指向變數的數值,可利用反參考運算子 * ,例如
int b = *aPtr; // b 會得到 a 的值
結構
結構可存放不同資料型態的數值,使用關鍵字 struct 來定義,例如
struct Demo { int member1; float member2; char *member3; };
設定或存取結構中的成員 (member) 則利用小數點 .
Demo d; d.member1 = 1; d.member2 = 2.0; d.member3 = "3";
C++ 的結構其實是預設為 public 的類別 (class) 。
聯合
聯合同樣可存放不同資料型態的數值,使用關鍵字 struct 來定義,例如
union Demo { int member1; float member2; char *member3; };
但是聯合裡頭只能有一個成員被給值,當某一個成員被給值後,其他成員都會轉變為未定義
Demo d; d.member1 = 1; d.member2 = 2.0; // d.member1 會變成未定義 d.member3 = "3"; // d.member2 會變成未定義
C++ 的聯合其實是節省記憶體空間的類別。
中英文術語對照 | |
---|---|
複合資料型態 | compound type |
參考 | reference |
列舉 | enumeration |
匿名列舉 | anonymous enumeration |
陣列 | array |
字元陣列 | character array |
指標 | pointer |
結構 | structure |
聯合 | union |
變數 | variable |
別名 | alias |
運算子 | operator |
關鍵字 | keyword |
識別字 | identifier |
資料型態 | data type |
元素 | element |
成員 | member |
類別 | class |
您可以繼續參考
複合資料型態
相關目錄
回 C++ 快速導覽
回 C++ 教材
回首頁
參考資料
C++ reference
cplusplus.com
Cprogramming.com C++ Tutorial
C++ Primer, Fourth Edition, Stanley B. Lippman...
沒有留言:
張貼留言