C++型別的結構、陣列以及列舉的方式
阿新 • • 發佈:2019-01-05
想知道技術類知識,請百度【鏈客區塊鏈技術問答社群】
C++型別–結構.陣列.列舉
感覺社群寫筆記的都是大神,我是個初學者,就寫一些簡單點的吧,說不定以後我也會在這裡成為大神呢~嘿嘿。
一.結構
- 結構型別定義
struct <結構型別名> {<成員表>};
typedef struct <結構型別名> {<成員表>}<結構體類型別名>;
1)名字可以跟結構名不一樣,不過都是一樣的,設定別名知識方便定義變數,保留語法。
2)在結構型別定義時,對成員變數進行初始化是沒有意義的,因為型別不是程式執行時刻的實體,它們不佔用記憶體空間。 - 結構型別變數定義
struct <結構型別名> <變數名錶>;//C的用法
或 <結構型別名> <變數名錶>;// C++的用法
或 struct <結構型別名> {<成員表>}<變數名錶>; - 操作
1)訪問成員:<結構型別的變數名>.<成員名>
2)對結構型別的資料可以進行整體賦值,但是要保證兩者屬於相同的結構(成員名和型別都相同)。 - 結構型別的預設引數傳遞方式是值傳遞,因此,當結構型別很大時傳輸速度回受限。
- 定義完結構型別後,其使用和平時的型別沒有太大的區別,該加加該減減,不過要記住其每個成員也是一個實體。
列舉 - 列舉型別定義
enum <列舉型別名> {<列舉值表>}; - 列舉變數的定義
<列舉型別> <變量表>;
或<列舉型別>{<列舉值表>} <變量表>; - 列舉變數的使用
1)賦值
Day d1,d2;
d1 = SUN; //true
d2 = 3; //error, 但int n = SUN;也是可以的
d2 = (Day)3;//true 但這樣不安全,必須要保證該整型數屬於列舉型別的值集,否則沒有意義
2)算術運算
d2 = d1 + 1;//error,因為它d1 + 1的結果是整型
d2 = (Day)(d1 + 1);//true
陣列 - 二維陣列
1)初始化
int a[2][3] = {{1,2,3},{4,5,6}}; 等同於 int a[2][3] = {1,2,3,4,5,6};//二維陣列可以轉成一維陣列進行處理,但是要注意下標
int a[][3] = {{1,2},{3,4,5}};//第一個下標可以省略,其他的不能,更高維的陣列也同此。 - 一維陣列
1)定義
<元素型別> <一維陣列變數名>[<元素個數>];
也可以藉助 typedef 類定義
typedef <元素型別> <一維陣列型別名>[<元素個數>]; <一維陣列型別名> <一維陣列變數名>
2)操作
通過下標訪問元素。
注意下標是否越界。
初始化
int a[10] = {1,2,3};//其他元素初始化為0
int a[] = {1,2,3};//元素個數為3
未經允許,拒絕轉載。