日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算结构体的大小

發布時間:2024/9/27 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算结构体的大小 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

結構體是用戶建立由不同類型數據組成的組合型數據結構。

結構體的大小不是簡單地數據類型的相加,而是需要考慮到系統在存儲結構體變量時的地址對齊問題。

(1)結構體成員或者加上偏移量必須是下一個成員大小的整數倍

(2)結構體大小必須是最大成員大小的整數倍

struct A
{
?? ?int a; //4
?? ?float b;//4
};//8

int類型占4個字節,剛好是float類型的整數倍,這個結構體就直接相加就可以了。

struct B
{
?? ?char a;//1+3
?? ?int b;//4
};//8

因為char類型只占一個字節,int類型占4個字節,所以要偏移3個字節才是int的倍數,所以總共是8個字節

struct C
{
?? ?char a;//1+1
?? ?short b;//2
?? ?int c;//4
};//8

char類型占一個字節,short占兩個字節,偏移量為1,相加為4,int類型占4個字節,4剛好是4的倍數,所以總共是8個字節

struct D
{
?? ?char a;//1+3
?? ?int b;//4
?? ?short c;//2
};//10+2

char占一個字節,偏移3個字節,是int的整數倍,short占兩個字節,總共是10字節,但是結構體總大小必須是最長類型大小的整數倍,所以再偏移兩個字節,一共為12個字節。

PS:struct C 和 srcuct D 存儲的類型都是int,short和char類型,但是一個是8個字節,一個是12個字節,這就需要用戶在定義時注意類型的排列問題,注意內存的使用空間。

struct II
{
?? ?int a;///4
?? ?char b;//1+3
};//8

struct I
{
?? ?float x;//4
?? ?struct II y;//8
};//12 ?

struct II 的大小為8個字節,struct I 的大小為float(4)加上struct II 的大小(8)為12個字節。之所以不是16個字節是因為只需要遵循是最大單個類型的整數倍就可以了。

?

?

?

總結

以上是生活随笔為你收集整理的计算结构体的大小的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。