結構體,聯合體,類的大小計算

2021-09-19 23:24:47 字數 824 閱讀 1331

#includeusing namespace std;

struct s

;int main()

//該結構體中最大的型別是double,所以對齊符為8

1、首先分配8個位元組

2、int a[10]佔40個位元組

3、所以每兩個陣列元素申請8個位元組

4、直到申請5次(40個位元組)才將int a[10]全部分配完畢

5、再為b分配8個位元組(此時已經48個位元組了)

6、最後為c分配,此時為b申請的8個位元組還剩7個位元組,並不夠用,還得再分配8個位元組。

7、總共56個位元組

2、類大小的計算

注意1:靜態成員不計入類大小

class b; 

//該類的大小為8,c不計入類的大小

注意2:空類的大小為1

注意3:派生類繼承空類時,其大小為自身類的大小,並不加上父類的1;

class b

;class c : public b

;//c的大小為4,並不是5

注意4:類中用空類,要將空類按乙個位元組算

class b

;class c

;//此時c的大小為8,c中的成員b按乙個位元組算,按照對其原則,c佔8個位元組

注意:5帶虛函式的類的大小,要將虛函式指標算進去

class a

; int a;};

class b : public a

;//a大小為8,b大小為12

C語言結構體,聯合體,列舉體的大小計算

1.結構體struct大小計算 2.聯合體union大小計算 3.列舉體enum的大小計算 1.結構體struct大小計算 奉行兩個規則 1.結構體中每個成員的偏移量必須是該成員自己所佔記憶體大小 的整數倍,否則,會用空白位元組填充。2.當運用規則1 計算結構體大小完畢後,其結構體大小必須是 該結構...

關於結構體 聯合體 類的大小比較

在實際專案中,結構體和其他型別基礎 資料型別 一樣,結構體是大量存在的。結構體的大小不是結構體元素單純相加就行的,需要考慮到系統在儲存結構體變數時的位址對齊問題。對齊方式如下 1.每個成員的偏移量都必須是當前成員所佔記憶體大小的整數倍,否則在成員之前加上偏移量 2.當前所以成員大小計算完畢,編譯器判...

結構體聯合體

在c中,結構也是一種資料型別,可以使用結構變數,因此,象其它型別的變數一樣,在使用結構變數時要先對其定義。定義結構變數的一般格式為 struct 結構名 結構變數 結構名是結構的識別符號不是變數名。型別為第二節中所講述的五種資料型別 整型 浮點型 字元型 指標型和無值型 構成結構的每乙個型別變數稱為...