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