做網(wǎng)站底色怎么選網(wǎng)站seo排名公司
目錄
1. 聯(lián)合體
1.1 聯(lián)合體類型的聲明及特點
1.2 相同成員的結(jié)構(gòu)體和聯(lián)合體對比
1.3 聯(lián)合體大小的計算
1.4 聯(lián)合體的應(yīng)用舉例?
2. 枚舉類型
2.1 枚舉類型的聲明
2.2?枚舉類型的優(yōu)點
1. 聯(lián)合體
1.1 聯(lián)合體類型的聲明及特點
像結(jié)構(gòu)體一樣,聯(lián)合體也是由一個或多個成員構(gòu)成的,這些成員可以是不同類型的。
//結(jié)構(gòu)體
struct S
{char a;int b;
};//聯(lián)合體
union S
{char a;int b;
};
但是編譯器只為最大的成員分配足夠的空間。聯(lián)合體的特點就是所有的成員共用同一塊內(nèi)存空間。所以聯(lián)合體也叫:共用體。
個聯(lián)合體的其中一個成員賦值,其他的成員的值也跟著變化。
畫出un的內(nèi)存布局圖:
?
1.2 相同成員的結(jié)構(gòu)體和聯(lián)合體對比
#include <stdio.h>
//結(jié)構(gòu)體
struct S
{char c;int i;
};struct S s = { 0 };//聯(lián)合體
union Un
{char c;int i;
};union Un un = { 0 };
?
1.3 聯(lián)合體大小的計算
聯(lián)合體的大小至少是最大成員的大小。
當(dāng)最大成員不是最大對齊數(shù)的整數(shù)倍的時候,就要對齊到最大對齊數(shù)的整數(shù)倍。
1.4 聯(lián)合體的應(yīng)用舉例?
#include <stdio.h>int check_sys()
{union{char c;int i;}u;u.i = 1;return u.c;
}int main()
{int ret = check_sys();if (ret == 1)printf("小端\n");elseprintf("大端\n");return 0;
}
2. 枚舉類型
2.1 枚舉類型的聲明
枚舉就是把可能的取值一一列舉。
例如:月份有12個月,可以一一列舉。
#include <stdio.h>enum Sex
{MALE,FEMALE,SECRET
};enum Color
{RED,GREEN,BLUE
};
如上定義的 enum Sex,enum Color?都是枚舉類型
{}中的內(nèi)容是枚舉類型的可能取值,也叫枚舉常量。
這些可能取值都是有值的,默認從0開始,依次遞增1
在聲明枚舉類型的時候也可以賦初值。
2.2?枚舉類型的優(yōu)點
枚舉的優(yōu)點:
1. 增加代碼的可讀性和可維護性;
2. 和 #define 定義的標(biāo)識符比較,枚舉有類型檢查,更加嚴(yán)謹(jǐn);
3. 便于調(diào)試,預(yù)處理階段會刪除 #define 定義的符號;
4. 使用方便,一次可以定義多個常量;
5. 枚舉常量是遵循作用域規(guī)則的,枚舉聲明在函數(shù)內(nèi),只能在函數(shù)內(nèi)使用。