使用sizeof計算聯合體(union)的大小

2021-08-15 06:35:41 字數 409 閱讀 5624

聯合體的大小取決於他所有成員中占用空間最大的乙個成員的大小。並且對於復合資料型別,如union,struct, class 的對齊方式為成員中最大成員的對齊方式。

#include

using namespace std;

union u               //u的大小是其中最大的double型別成員a,所以sizeof(u) = sizeof(double) = 8; ;

union u1           // u1的大小是char[13] 型別的陣列,但由於另乙個成員int b ,所以要以4對齊,13以4對齊就是補3位到16; ;

union u2          // u2的大小是char[13]型別的陣列,不需要補齊,所以長度為13; ;

int main()

執行結果:

使用sizeof計算聯合體的大小

include using namespace std union u union u2 union u3 int main int main int main cout 解析 上述 中用 pragma pack將對齊設定為1,由於結構體test中的成員s1,s2和i的自身對齊分別為2 2和4,都小...

聯合體詳解

在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也可以使用聯合體來發揮其長處。首先看一段 union型別是共享記憶體的,以size最大的結構作為自己的大小,這樣的話,myun...

關於聯合體

一 聯合體 聯合體的每個成員共享一塊記憶體,這塊記憶體的大小就是聯合體占用記憶體的大小。這塊記憶體至少有其中占用記憶體最大成員的大小,有時候大於是因為有時候要考慮記憶體對齊。二 聯合體的作用 1.可以判斷平台屬於大端儲存還是小端儲存 2.共享記憶體 程序間通訊 的時候可以使用 3.在通訊程式中,有時...