C 筆記 C 結構體占有空間計算

2021-08-17 08:15:36 字數 877 閱讀 9947

首先需要明白,64位系統,不同變數占有的空間為

char :1

個位元組char*(

即指標變數

): 8

個位元組(

32位系統為

4位元組)

short int : 2個位元組

int:

4個位元組

unsigned int : 4

個位元組float:  4

個位元組double: 

8個位元組

long:   8

個位元組(

32位系統下為

4位元組,大小和

int一樣)

long long:  8個位元組

unsigned long:  8

個位元組(

32位系統下為

4個位元組)

然後需要明白,

64位系統在記憶體管理方面遵循

8位元組對齊(

32位系統為

4位元組對齊),原則:在8

位元組對齊的情況下,按

8個位元組為單位分配儲存空間,如果不足,會自動補充,本次分配不足以存放下面的變數時,會重新分配空間。

比如struct a{

unsigned int a;

char b[2];

double c;

short d;

比如要計算sizeof(a),如何計算呢

首先unsigned int a為4個位元組,還剩4個位元組分配給char b[2],無論是在類還是結構體中,陣列型別都占有陣列中變數占有空間乘以個數,這裡的char b[2]占有2個位元組,還剩2個位元組

double c占有8個位元組,額外需要申請8個位元組,占有6個,剩下兩個位元組

這兩個位元組剛好給d

總共占用24個位元組

如何計算C 中結構體的儲存空間

include stdafx.h include struct a test a struct b test b struct c test c struct d test d int main 輸出的結果為24 16 6 32 對於這樣的乙個結果感到一些困惑,在網上查了相關的資料之後發現,原來是這...

C基礎 struct結構體所佔空間計算方法

怎麼計算struct結構所佔空間?以前看過又不太記得,記個筆記,省的每次都要去找 整體空間是占用空間最大的成員 的型別 所佔位元組數的整數倍。資料對齊原則 記憶體按結構體成員的先後順序排列,當排到該成員時,其前面已擺放的空間大小必須是該成員型別大小的整數倍,如果不夠則補齊,依次向後類推。32位系統下...

C 筆記(6) 結構體

結構體是c語言中的一種由基本資料型別構成的 並用乙個識別符號來命名的各種變數的組合。比如定義乙個node的結構體 struct node 這樣就定義了乙個結構體型別,它裡面包含乙個字串和乙個整型變數。用這個結構體來定義變數s1和s2 struct node s1,s2 s1和s2就都是struct ...