關於共用體所佔的記憶體空間的問題

2021-10-06 05:25:03 字數 937 閱讀 1915

是幾個不同型別的變數共占用一段記憶體的結構(對同一段記憶體單元的資料按不同型別來處理)

一般形式:

union 標誌名

變數表列;

共用體型別的變數占用記憶體空間的大小等於成員分量中最長的分量所占用記憶體的長度先定義,後使用

注意!!!:只能引用共用體變數中的成員,不能整體引用共用體變數

系統採用覆蓋技術,共用體變數中起作用的成員最後一次存放的成員,在存入乙個新的成員後原有的成員就失去作用

共用體變數的位址和它的各成員的位址都是同一位址不能引用變數名來得到乙個值,不能對共用體變數名賦值,不能

在定義共用體變數時對它整體初始化

共用體型別的變數可作為函式實參進行傳遞共用體型別可出現在結構體型別中,結構體型別也可存在於共用體型別中

《程式設計基礎實訓指導教程-c語言》

isbn 978-7

-03-032846-5

p114

6.1.2 上級實訓內容

#include

union pw

a1;void

main()

分析:

根據共用體所佔記憶體空間為成員分量最長的分量所佔的記憶體空間

即,程式執行結果為20

獲取結構體成員變數所佔的記憶體空間大小的巨集定義

define member size type,member sizeof type 0 member 說明如下 type 表示結構體型別名。member 表示結構體成員變數名。type 0 被強制轉換了,轉換成了乙個type型別的結構體的指標。c標準庫有乙個巨集定義 offsetof 該巨集的宣告...

關於結構體中有共用體成員時所佔記憶體容量的計算

今天碰到乙個面試題,題目如下 include typedef union data typedef struct list int main 當然不是原題,但形式差不多,當時我理解有誤,最初我是這樣理解的,首先看union,最大的應該是short b 5 它佔10個位元組,然後轉到struct中,l...

C 中的類所佔記憶體空間總結

類所佔記憶體的大小是由成員變數 靜態變數除外 決定的,成員函式 這是籠統的說,後面會細說 是不計算在內的。摘抄部分 成員函式還是以一般的函式一樣的存在。a.fun 是通過fun a.this 來呼叫的。所謂成員函式只是在名義上是類裡的。其實成員函式的大小不在類的物件裡面,同乙個類的多個物件共享函式 ...