目的:犧牲一點空間,換時間的效率(cpu執行效率)
最終結構體大小一定是4的倍數(32bit系統)
結構體裡成員變數順序不一致,也會影響結構體的大小
資料型別
32位機大小(位元組)
64位機大小(位元組)
char11
short22
int4
4long48
指標型別48
double88
float44
unsigned int44
long long88
#includestruct abc;
int main()
在此程式中cpu讀結構體變數時,第一次需要讀取乙個位元組,第二次需要讀取四個位元組。而32bitcpu每次最大可讀取4byte,用sizeof讀取結構體大小,一定是4的倍數。執行結果:
ubuntu@ubuntu-virtual-machine:~$ gcc struct.c -o struct
ubuntu@ubuntu-virtual-machine:~$ ./struct
the size of struct abc is 8
#includestruct abc;
struct aeo;
int main()
在結構體abc中a佔乙個位元組剩餘三個位元組,b佔兩個位元組,在三個位元組裡面夠放,所以a、b一起佔四個位元組執行結果:
ubuntu@ubuntu-virtual-machine:~$ ./struct
the size of struct abc is 8
,aeo is 12
嵌入式c語言面試必備(結構體位元組對齊的方法和大小確定)
C語言結構體的位元組對齊
在c語言中,結構是一種復合資料型別,其構成元素既可以是基本資料型別 如int long float等 的變數,也可以是一些復合資料型別 如陣列 結構 聯合等 的資料單元。在結構中,編譯器為結構的每個成員按其自然對界 alignment 條件分配空間。各個成員按照它們被宣告的順序在記憶體中順序儲存,第...
C語言結構體的位元組對齊
下面直接來看例子吧 測試環境為32位的系統 以下結構體分別佔多少位元組 struct a sizeof a 3 因為a b c按照1個位元組進行對齊 struct b sizeof b 8 按照4個位元組對齊 a佔4位元組 b佔乙個位元組 c佔2個位元組 有1個位元組剩餘 struct c size...
C語言結構體位元組對齊總結
首先說說為什麼要對齊。為了提高效率,計算機從記憶體中取資料是按照乙個固定長度的。以32位機為例,它每次取32個位,也就是4個位元組。位元組對齊有什麼好處?以int型資料為例,如果它在記憶體中存放的位置按4位元組對齊,也就是說1個int的資料全部落在計算機一次取數的區間內,那麼只需要取一次就可以了。如...