struct結構體大小計算

2021-09-10 01:42:57 字數 730 閱讀 7530

c/c++中結構體大小的計算:

結構體大小與屬性型別和它的儲存結構有關,總結來說便是:

結構體大小總是其中屬性最大型別的整數倍大小

以所佔位元組最大的屬性為基本單位進行屬性劃分

例:struct mystruct

;該結構體大小為44

分析:char a[20];//20位元組

int x;//4位元組

float c[4];//16位元組

char v;//1位元組

其中最大資料型別為float或int(4位元組),因此該結構體大小是4的整數倍

以以所佔位元組最大的屬性(char a[20])為基本單位進行屬性劃分

char a[20];//20位元組為第一分區 佔20位元組

int x; float c[4];為第二分割槽 佔20位元組

char v 為第三分割槽 佔1位元組,這時注意,因為41不是4的整數倍,因此擴充套件到44位元組

直觀圖如下:

每個分割槽大小為4,a佔第一行,x和c佔第二行,v佔第三行

再來乙個例子:

struct mystruct

;該結構體大小為16位元組

因為最大的是x,佔8位元組,因此以8位元組為基本單位劃分,前兩個屬性為1+4=5個位元組,剩下的裝不下x,因此再加上x的8個位元組,大小為5+3(剩餘)+8=16位元組

struct 結構體型別的大小計算

struct s1 問sizeof s1 等於多少?聰明的你開始思考了,char佔1個位元組,int佔4個位元組,那麼加起來就應該是5。是這樣嗎?你在你機器上試過了嗎?也許你是對的,但很可能你是錯的!vc6中按預設設定得到的結果為8。why?為什麼受傷的總是我?請不要沮喪,我們來好好琢磨一下size...

struct大小計算

sizeof struct 大小討論 針對位元組對齊,環境使用的gcc version 3.2.2編譯器 32位x86平台 為例。char 長度為1個位元組,short 長度為2個位元組,int 長度為4個位元組。struct 子項在記憶體中的按順序排列,在沒有 progma pack n 引數的情...

struct 大小計算

結構體是一種復合資料型別,通常編譯器會自動的進行其成員變數的對齊,已提高資料訪問的效率。在預設情況下,編譯器為結構體的成員按照自然對齊 natural alignment 條方式分配儲存空間,各個成員按照其宣告順序在儲存器中順序儲存。自然對齊是指按照結構體中成員size最大的對齊,在cl編譯器下可以...