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編譯器下可以...