c語言問題系列教程之二 結構 聯合和列舉

2021-07-23 03:55:10 字數 1319 閱讀 5846

一、結構宣告

1.兩種結構宣告的型別

struct x1;
此方法宣告了乙個

結構標籤,使用該宣告的結構標籤時必須是

struct x1 a;

typedef struct  x2;
此方法宣告他它的例項時不須要再使用struct關鍵字,相當於宣告了一種型別x2。

也可以同時使用這兩種方法

typedef struct x3 x3;
2.c語言中不能結構標籤自動生成型別定義名,結構是這樣中關鍵字宣告的

struct x;

struct x thestruct;

在.c檔案中如果用x thestruct;這樣的語句宣告結構體

#includestruct x;

int main()

報錯如下

在.cpp檔案中如果用 x thestruct;這樣的語句宣告結構體是可以通過編譯的

#includeusing namespace std;

struct x;

int main()

程式輸出結果如下

3.位域的宣告

有時候儲存乙個變數並不需要乙個位元組,比如乙個開關變數只需要一位即可,有時候也為了管理方便,所以出現了域的概念。域的宣告方法個結構體類似,可以用下面的方法:

struct bs 

data;

此時表示a佔8bit,b佔2bit,c佔6bit。

①乙個位域必須儲存在同乙個位元組中,不能跨兩個位元組。

②對於不用的位,可以用無名域來填充,無名域即把識別符號去掉,只剩下":"和數字。

struct k 

;

位域所佔空間也是有對齊和邊界原則的(可以參考

c語言中結構體空間大小的確定),比如:

#includestruct x;

int main()

輸出結果為

二、聯合

1.聯合本質是乙個成員相重疊的結構,聯合的大小是它的最大成員的大小(也會有對齊和邊界原則)。

這部分內容就這麼多了,我們下期在會~~

C語言知識結構之二

這張圖的整體思路是 用c寫程式,該學會什麼?要用c寫的更好,改學會什麼?其實,只要是分層的知識結構,大致的思路是 首先,研究本層的知識 其次,研究上面第一層 下面第一層的知識 若存在的話 第三,研究上面 下面加一層的知識 重複步驟3。目標只有乙個 把本層的工作做好 牢記目標,別發散了,研究其它層過於...

幾年前做家教寫的C教程(之二)

c語言學習寶典 2 認識c語言中的運算子 1 算術運算子 2 關係運算子 3 邏輯運算子 4 位運算子 5 賦值運算子 以及它的擴充套件運算子 6 條件運算子 7 逗號運算子 8 指標運算子 和 9 求位元組數運算子 sizeof 10 強制型別轉換運算子 型別 11 分量運算子 12 下標運算子 ...

重溫C語言系列之二(函式的返回值)

1.函式的返回值不可以是區域性變數 2.函式內的區域性變數在函式呼叫完成之後自動銷毀,因為區域性變數是存放於棧空間內的 理論很明確,但是實際應用中還是有一些疑惑的。先找幾個常見的例子一步一步深入說明。這個執行結果是什麼?按照上面的理論,我們返回乙個區域性變數,這個區域性變數在函式呼叫完成後已被自動銷...