首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 資料對齊:struct、union、enum 與 sizeof 詳解

     編輯:關於C++

struct 對齊規則

  1. 第一個成員偏移 0。
  2. 後續成員偏移為 max(成員大小, 當前對齊數) 的倍數(通常為成員大小)。
  3. 結構體總大小為最大成員對齊數的倍數(尾部填充)。

範例

struct s1 { char c; double d; int i; char c2; };
// 佈局:c(0) + 7 padding + d(8~15) + i(16~19) + c2(20) + 3 padding = 24 bytes

union 大小

等於最大成員大小(對齊至該成員對齊需求)。所有成員共用同一記憶體起始位址。

enum 大小

底層型別為可容納所有枚舉值的最小整數型別(通常 int,4 bytes)。C++11 可指定 enum class Name : uint8_t。

大端 vs 小端

  • 大端:高位元組存低位址(網路序)。
  • 小端:低位元組存低位址(x86/x64)。

範例:union { int i; unsigned char ch[2]; },i = 0x1420,小端下 ch[0] = 0x20,ch[1] = 0x14。

圖示參考

struct 對齊圖解 union 宣告 enum 宣告 大端儲存 小端儲存

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved