C 共用體深度解析

2021-10-14 01:45:51 字數 996 閱讀 3105

在c++中,會需要使幾種不同型別的變數存放到同一段記憶體單元中,比如,將乙個整型變數、乙個字元型變數、乙個雙精度型變數放在同乙個位址開始的記憶體單元中,這3個變數在記憶體中佔的位元組數不同,但都從同一位址開始存放,這種使幾個不同的變數共占同一段記憶體的結構,稱為共用體型別的結構。

宣告共用體型別的一般形式為

union 共用體型別名 {成員表列 };
定義共用體變數的一般形式為

共用體型別名 共用體變數名;
c++允許在宣告共用體型別的同時定義共用體變數,也可沒有共用體型別名而直接定義共用體變數。

//有共用體型別名

union data

union_1,union_2;

//無共用體型別名

union

union_1,union_2;

c++結構體變數所佔記憶體長度是各成員佔的記憶體長度之和,每個成員分別占有其 自己的記憶體單元,共用體變數所佔的記憶體長度等於 最長的成員的長度。

c++不能引用共用體變數,而只能引用共用體變數中的成員。

union_1.temp;

//引用共用體變數中的整型成員temp

union_1.character;

//引用共用體變數中的字元型成員character

union_1.str;

//引用共用體變數中的雙精度成員str

c++使用共用體變數的目的是希望用同乙個記憶體段存放幾種不同型別的資料,在每一瞬時只能存放其中一種,而不是同時存放幾種。

共用體變數的位址和它的各成員的位址都是同 一位址。

不能對共用體變數名賦值。

不能企圖引用變數 名來得到乙個值。

不能在定義共用體變數時對它初始化。

不能用共用體變數名作為函式引數。

c++能夠訪問的是共用體變數中最後一次被賦值的成員,在對乙個新的成員賦值後原有的成員就失去作用。

c++共用體

node 呼叫c 方法解析共用體

addon.cc include namespace demo this is the implementation of the add method input arguments are passed using the const functioncallbackinfo args stru...

C 結構體共用體

12 c 中陣列初始化的特點 初始話陣列可以省略等號 初始話內容為空 不可縮窄操作 double people double people int number 不通過,因為浮點到整形為縮窄13 sizeof 計算陣列時候會比strlen 多計算乙個0位元組 14 字串的初始化和賦值,string ...

C語言 共用體

共用體 typedef union strudent void fun union 列印 sizeof studend 2,data 0 0xfe,data 1 0xff,列印出0xff,暫時沒有理解 已理解 應該列印出0才對啊!如果jack.number 2 那麼列印 sizeof studend...