结构体是如何在C编程语言中实际实现的?

the*_*ian 6 c x86 assembly struct

结构是C编程语言中的复合数据结构; 它们由诸如int和指针之类的基元组成,它们以相邻的方式放置在存储器中,例如阵列.

我的问题是,结构本身是由什么构成的?它们是一种阵列吗?例如,哈希表可以实现为链表列表.以类似的方式,什么是实现的结构?如果需要,请在x86汇编级别解释.谢谢.

Vag*_*ish 2

在程序集级别,结构归结为通过与结构成员相对应的偏移量访问的地址。

根据对齐规则和存储类,为结构实例分配内存。

例子:

struct A
{
  int a,
  char b
}a1;
Run Code Online (Sandbox Code Playgroud)

在上面的情况下,如果你编写a1.b = 5它的汇编等价物将是:

MOV 5 TO ADDRESS OF a1 + 4 //假设整数大小为4