NUC140 之共用體和結構體巢狀

2021-09-06 10:12:35 字數 654 閱讀 2897

共用體和結構體巢狀的情況最早見於nuc1***的庫函式,後來用的非常順手,

看下面的**:

typedef union

error_sample;

}define_error;

typedef是定義一種型別,具體不詳述了。

定義了一種共用體,它有兩個成員,乙個是乙個字元型變數,另乙個是結構體,

結構體採用位定義,其中每乙個成員占用一位,加起來剛好乙個位元組

define_error error_register1
然後宣告這樣乙個變數,使用效果如下:

error_register1.error_sample.disf = 1;
為什麼不用8個變數而是用乙個巢狀型的結構體呢,並不是為了省記憶體,

而是使用的時候非常方便,例如初始化和串列埠傳遞引數時,只需要:

error_register1.error_sample_all = 0;
是不是很方便,而且由於打包在乙個結構體裡,非常適合暫存器的定義,便於閱讀。

共用體和結構體

共用體和結構體的宣告與初始化的格式不同。宣告 struct or union new st 初始化 new st 和陣列一樣,使用逗號分隔,並用花括號括起。也可以全放在一行。可以同時完成定義結構和建立結構變數的工作,只需要將變數名放在結束括號的後面 struct or union new st ne...

結構體和共用體

宣告結構和結構體變數 include include define maxtitl 41 define maxautl 31 define max 100 結構宣告 並未建立實際的資料物件 也稱結構宣告為模板 struct bookbok int main 復合字面常量 bk1 struct boo...

結構體和共用體

通過前面的講解,我們知道結構體 struct 是一種構造型別或複雜型別,它可以包含多個型別不同的成員。在c語言中,還有另外一種和結構體非常類似的語法,叫做共用體 union 它的定義格式為 union 共用體名 共用體有時也被稱為聯合或者聯合體,這也是 union 這個單詞的本意。結構體和共用體的區...