C 結構體大小問題

2022-06-06 12:45:12 字數 590 閱讀 2131

using

system;

using

system.collections.generic;

using

system.linq;

using

system.runtime.interopservices;

using

system.text;

using

system.threading.tasks;

namespace

struct

}//可序列化 設定對齊值為1

//[serializable, structlayout(layoutkind.sequential, pack = 1

)] public

struct

datasize

;}

按照最大的對齊值對齊,上面最大的對齊值為4,2+1=3<4 3+2=5>4,所以a和b佔4個,c佔4個,d佔4個,e,f,g佔4個,h佔4個共20個位元組。若設定對齊值為1,那麼直接將所有對齊值相加即可為16.

輸出結果

結構體大小:20

**

結構體和類的大小問題

看這樣乙個筆試題 include using namespace std pragma pack 8 struct example1 struct example2 pragma pack int main int argc,char argv 問程式的輸出結果是什麼?答案是 8,16,4 stru...

C語言小問題 結構體

宣告 c語言小問題系列 基本均來自 你必須知道的495個c語言問題 一書 絕非原創哈 寫下來 純粹為了學習 也希望有更多的人可以看到 看下面的兩個宣告 有什麼區別 struct x1 typedef struct x2 第一種形式其實宣告了乙個結構標籤 structure tag 第二種宣告了乙個 ...

c 類的大小問題

先看一段 include include include include struct a class x class y public x class b int main 解釋 第乙個sizeof a 的大小是因為記憶體分配的效率問題,所以都會以類裡面占用位元組最大的 基本型別 double 為...