色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

C語言結構體數組怎么讓后面的小數相加?

洪振霞2年前15瀏覽0評論

一般的實現上結構體布局是這樣(暫不計位域和柔性數組):

首個成員偏移是0(標準要求)。

后一個成員需要在前一個成員之后(標準要求)。其偏移是保證該成員不與前一成員重疊的該成員對齊的最小整數倍。

結構體的對齊是各個成員對齊的最大值。結構體的大小是能保證放下最后成員的對齊的最小整數倍。

標準允許結構體有更大對齊或布局更加“松垮”一點(有更多空隙),但實現一般不會這樣。

一般實現上數組類型的對齊同元素類型。

這里的規則無論成員和元素是否為結構體都成立。

按題主描述,測試所用的平臺使用LP64數據模型,short大小與對齊均為2字節,int大小與對齊均為4字節,long及指針大小與對齊均為8字節。

structP1{inta;charb;intc;chard;};

a偏移為0,b偏移為4,c偏移為8(大于4+1的4的最小整數倍),d偏移為12。P1對齊為4,大小為16。

structP2{inta;charb;charc;longd;};

a偏移為0,b偏移為4,c偏移為5,d偏移為8。P2對齊為8,大小為16。

structP3{shorta[3];charb[3];};

a偏移為0,b偏移為6。P3對齊為2,大小為10。

structP4{shorta[3];char*b[3];};

a偏移為0,b偏移為8(大于0+6的8的最小整數倍)。P4對齊為8,大小為32。

structP5{structP3a[2];structP2t;};

a偏移為0,t偏移為24(大于0+20的8的最小整數倍)。P5對齊為8,大小為40。

C中類型大小可用sizeof獲取,類型對齊可用_Alignof獲取,成員偏移可用宏offsetof獲取。