亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码
標(biāo)題:
C語言結(jié)構(gòu)體大小的計(jì)算超容易理解
[打印本頁]
作者:
misterchen
時(shí)間:
2019-5-31 11:56
標(biāo)題:
C語言結(jié)構(gòu)體大小的計(jì)算超容易理解
結(jié)構(gòu)體的數(shù)據(jù)類型的有點(diǎn)多我們就不啰嗦了,直接來看相同數(shù)據(jù)結(jié)構(gòu)體的幾種書寫的格式吧。
格式一:
01.struct tagPhone
02.{
03. char A;
04. int B;
05. short C;
06.}Phone;
格式二:
01.struct tagPhone
02.{
03. char A;
04. short C;
05. int B;
06.}Phone2;
格式三:
01.struct tagPhone3
02.{
03. char A;
04. char B[2];
05. char C[4];
06.}Phone3;
我們都知道,char類型占用1個(gè)字節(jié),int型占用4個(gè)字節(jié),short類型占用2個(gè)字節(jié),long占用8個(gè),double占用16個(gè);
那么我們可能會(huì)犯一個(gè)錯(cuò)誤就是直接1+4+2=7,該結(jié)構(gòu)體占用7個(gè)字節(jié)。這是錯(cuò)的。
以下我們簡(jiǎn)單分析下:
計(jì)算結(jié)構(gòu)體大小時(shí)需要考慮其內(nèi)存布局,結(jié)構(gòu)體在內(nèi)存中存放是按單元存放的,每個(gè)單元多大取決于結(jié)構(gòu)體中最大基本類型的大小。
對(duì)格式一:
以int型占用4個(gè)來作為倍數(shù),因?yàn)锳占用一個(gè)字節(jié)后,B放不下,所以開辟新的單元,然后開辟新的單元放C,所以格式一占用的字節(jié)數(shù)為:3*4=12;
同理對(duì)于格式二,
A后面還有三個(gè)字節(jié),足夠C存放,所以C根著A后面存放,然后開辟新單元存放B數(shù)據(jù)。所以格式二占用的內(nèi)存字節(jié)為2*4=8.
對(duì)于格式三:
上面結(jié)構(gòu)計(jì)算大小,sizeof(Phone3) = 1 + 2 + 4 = 7, 其大小為結(jié)構(gòu)體中個(gè)字段大小之和,這也是最節(jié)省空間的一種寫法。
總結(jié):
第一種寫法,空間浪費(fèi)嚴(yán)重,sizeof 計(jì)算大小與預(yù)期不一致,但是保持了每個(gè)字段的數(shù)據(jù)類型。這也是最常見的漫不經(jīng)心的寫法,一般人很容易這樣寫;
第三種寫法,最節(jié)省空間的寫法,也是使用 sizeof 求大小與預(yù)期一樣的寫法,但是全部使用字節(jié)類型,丟失了字段本生的數(shù)據(jù)類型,不方便使用;
第二種寫法,介于第一種和第三種寫法之間,其空間上比較緊湊,同時(shí)又保持了結(jié)構(gòu)體中字段的數(shù)據(jù)類型。
只要了解是這些寫法的差異性,可以視情況選用。
歡迎光臨 (http://www.denmoz.com/bbs/)
Powered by Discuz! X3.1