共用體Union的記憶體大小

2022-09-05 14:24:17 字數 482 閱讀 4472

下例表示宣告乙個共用體foo:

union foo{

int i;

char c;

double k;

再用已宣告的共用體可定義共用體變數。

例如用上面說明的共用體定義乙個名為bar的共用體變數, 可寫成:

union foo bar;

在共用體變數bar中, 整型變數i和字元變數c共用同一記憶體位置。

當乙個共用體被宣告時, 編譯程式自動地產生乙個變數, 其長度為聯合中最大的變數長度的整數倍。以上例而言,最大長度是double資料型別,所以foo的記憶體空間就是double型的長度。

union foo

char s[10];

int i;

在這個union中,foo的記憶體空間的長度為12,是int型的3倍,而並不是陣列的長度10。若把int改為double,則foo的記憶體空間為16,是double型的兩倍。【char和int共享記憶體,記憶體數必須為4的整數倍】

共用體和結構體所佔記憶體大小的計算方法一

共用體所佔記憶體大小 共用體所佔記憶體的大小即公用體中長度最大元素所占用的位元組數。方法一 結構體的記憶體大小 最後乙個成員的偏移量 最後乙個成員的大小 末尾的填充位元組數 例.1 struct data 比如說這個成員a,由於a是第乙個成員,所以它的位址就是結構體的首地 址,它相對於結構體的首位址...

共用體和結構體所佔記憶體大小的計算方法二

乙個結構體變數定義完之後,其在記憶體中的儲存並不等於其所包含元素的寬度之和。例一 include using namespace std struct x s1 void main 比如例一中的結構體變數s1定義之後,經測試,會發現sizeof s1 16,其值不等於sizeof s1.a 1 si...

union 共用體名

union 共用體名 變數名 共用體表示幾個變數共用乙個記憶體位置,在不同的時間儲存不同的資料型別和不同長度的變數。在union中,所有的共用體成員共用乙個空間,並且同一時間只能儲存其中乙個成員變數的值。正是利用union這個公用同塊位址的特點可以有很多的用途。1.cpu大小端的測試 首先了解下大小...