Я знаю, что такое структура, и как ее создать, и почему вы должны ввести один...
typedef struct Foo {
int a;
char b;
float c;
} Foo;
Но я не знаю, как это работает. Сохраняется ли шаблон в стеке и используется как таблица поиска, когда вы ссылаетесь на элемент (подобно тому, как работают классы)? Или здесь есть другой дизайн.
Часть о ЬурейеМ-щих структурах является дискуссионной.
Структуры - это в основном удобный способ хранения совокупности данных.
Компилятор знает, какие смещения указывают на какой элемент и печет их в программу, когда ему нужно получить доступ к элементу. Поскольку структура структуры не может меняться во время выполнения, нет необходимости использовать таблицу поиска.
Например, я мог бы написать указанную выше структуру следующим образом:
char Foo[12];
*((int *) (Foo + 0)) = a;
*((char *) (Foo + 4)) = b;
*((float *)(Foo + 8)) = c;
Вы можете видеть, что смещения выпекаются вручную. Там нет необходимости в таблице поиска. Когда вы используете struct, компилятор делает почти то же самое автоматически.
struct
- это просто определение. Он определяет расположение данных, но не сохраняется в вашей программе, если вы не объявите переменную этого типа. Переменная может храниться в стеке, в куче или даже в регистрах, если она достаточно мала... в соответствии с теми же правилами, которые используются для других переменных.
struct
- этоclass
который имеет открытые члены и базовые классы по умолчанию.typedef
имеет смысла.