关于结构体的大小

简介: 第一步是要知道结构体大小的计算方式:     结构体大小等于最后一个成员的偏移量加上最后一个成员的大小,     偏移量指的是结构体变量中成员的地址 – 结构体变量地址的差, 第一个成员的偏移量为0   下面代码 TRecord2 = record a: Integer; ...

第一步是要知道结构体大小的计算方式:

    结构体大小等于最后一个成员的偏移量加上最后一个成员的大小,

    偏移量指的是结构体变量中成员的地址 – 结构体变量地址的差, 第一个成员的偏移量为0

 

下面代码

TRecord2 = record
    a: Integer;
    b: Integer;
    c: Integer;
  end;

 {$A8+}
 TRecord1 = record
    a1: Byte;
    a2: Integer;
    a3: Int64;
    a4: Byte;
    a5: Word;
    case Integer of
      0: (e1: TRecord2);
      1: (e2: Int64);
  end;

直接用数据说话吧:

下面是每个成品的偏移量

a1:0, a2:4, a3:8, a4:16, a5:18, e1:24, e2:24, size:40

 

其实可以画一个格子<下面每个格子代表对齐的字节数>

a1, a2 a3 a4,a5 e1 e1      

 

 

还有一种

TRecSingle = record
  a1: Byte;
end;

 

这种大小是1

目录
相关文章
|
存储 C语言
C 结构体
C 结构体。
35 0
|
6月前
|
编译器 C++
详解结构体
详解结构体
42 1
|
5月前
初识结构体
初识结构体
42 5
|
5月前
|
存储 算法 C++
C++结构体
C++结构体
|
6月前
|
存储 算法 C语言
c结构体
c结构体
34 1
|
6月前
|
存储 安全 编译器
一篇文章介绍结构体
一篇文章介绍结构体
58 1
|
6月前
|
算法 C语言
结构体相关知识
结构体相关知识
|
机器学习/深度学习 存储 编译器
Day_16 结构体
Day_16 结构体
|
编译器 C++