coding第10天1.4

來根華子冷靜下發表於2020-11-14

聯合

聯合的目的在於創造一種可以多種選擇的型別;某一個時刻只存在一種型別。語法如下
union u_tag
{
int ival;
float fval;
char *sval;
}u;

(1)變數u必須足夠大,以儲存3種型別中的最大一種。
(2)讀取的型別必須是最近存入的型別。
(3)只能用第一個成員值型別初始化。
最後其他語法與結構語法一致。

位欄位

想象一個int型,4個位元組,32位元,假設只需要訪問32個位中的某些位;當然可以用位運算實現。當然也可以用欄位定義來代替,
書中沒有仔細說明,我們假設這是按照欄位的低位到高位依次定義的。
struct
{
unsigned int is_keyword :1;
unsigned int is_extern: 1;
unsigned int is_static:1;
}flag;
這個語法的特點就是加上:1(數字代表寬度),
在結構定義中定義欄位變數與定義結構體中成員變數的區別在於:
(1)定義時候,在定義的後面加上了冒號,以及表示位欄位寬度的數字。
(2)其他語法方式與結構體相一致。

相關文章