C/C++结构如何实际工作?

Cod*_*ith 0 c c++ struct

我知道结构是什么,如何制作一个结构以及为什么你应该键入一个...

typedef struct Foo {
    int a;
    char b;
    float c;
} Foo;
Run Code Online (Sandbox Code Playgroud)

但我不知道它是如何工作的.模板是否保存在堆栈中并在引用元素时像查找表一样使用(类似于类的工作方式)?或者这里有另一种设计.

tan*_*grs 5

关于类型定义结构的部分是值得商榷的.

结构基本上是将大量数据存储在一起的便捷方式.

编译器知道哪些偏移指向哪个元素,并在需要访问元素时将它们绑定到程序中.因为结构结构在运行时不能更改,所以不需要使用查找表.

例如,我可以编写以下结构,如下所示:

 char Foo[12];

 *((int *)  (Foo + 0)) = a;
 *((char *) (Foo + 4)) = b;
 *((float *)(Foo + 8)) = c;
Run Code Online (Sandbox Code Playgroud)

您可以手动查看偏移量.不需要查找表.当您使用结构时,编译器会自动执行相同的操作.