我知道结构是什么,以及如何制作一个结构以及为什么你应该输入一个...
typedef struct Foo {
int a;
char b;
float c;
} Foo;
但我不知道它是如何运作的。模板是否保存在堆栈中并在引用元素时像查找表一样使用(类似于类的工作方式)?或者这里有另一种设计。
答案 0 :(得分:5)
关于typedef-stru的部分is debatable。
结构基本上是将大量数据存储在一起的便捷方式。
编译器知道哪些偏移指向哪个元素,并在需要访问元素时将它们加入到程序中。因为结构体结构在运行时不能改变,所以不需要使用查找表。
例如,我可以编写如下结构:
char Foo[12];
*((int *) (Foo + 0)) = a;
*((char *) (Foo + 4)) = b;
*((float *)(Foo + 8)) = c;
您可以手动查看偏移量。不需要查找表。使用结构时,编译器会自动执行相同的操作。
答案 1 :(得分:1)
struct
只是一个定义。它定义了数据的排列,但除非您声明该类型的变量,否则它不会保存在程序本身中。变量可以存储在堆栈上,堆上,甚至寄存器中,如果它足够小......根据用于其他变量的相同规则。