Intereting Posts
Int в правило преобразования символов в C, когда int находится вне диапазона char Как написать приложение, которое использует терминал в качестве графического интерфейса? (в С) forkpty – гнездо Поведение компилятора C со старыми функциями без прототипов Как преобразовать строку в шестнадцатеричное значение в C Как упаковать шестнадцатеричное значение в переменной unsigned char в программе на C? Странный код C – динамические массивы? Eclipse отмечает, что функции OpenGL не могут быть решены Создание C DLL в Visual Studio, подходящее для использования js-ctypes в Mozilla Треугольный массив Ссылка Visual C повторяет статическую библиотеку MinGW Выбор случайного числа между двумя точками в C в чем смысл _AX = 1000 в следующей программе C? sclite (SCTK), аргумент шаблона C ++, Filter :: Filter *, является недопустимым. Cygwin Как проверить встроенные функции Intel, если расширения AVX поддерживаются процессором?

Как реально реализуются структуры на языке программирования C?

Структуры представляют собой составную структуру данных на языке программирования C; они состоят из примитивов, таких как int и указатели, все помещенные в память смежным образом, например массив.

Мой вопрос состоит в том, что из себя представляют сами структуры? Являются ли они типом массива? Например, хеш-таблица может быть реализована как массив связанных списков. Аналогичным образом, какова структура, реализованная как? Если необходимо, объясните на уровне сборки x86. Спасибо.

На уровне сборки структура сводится к адресу, к которому обращается смещение, соответствующее члену структуры.

В зависимости от правила выравнивания и памяти classа памяти выделяется, например, структура.

Пример:

struct A { int a, char b }a1; 

В приведенном выше случае, если вы пишете a1.b = 5 его эквивалент сборки будет чем-то:

MOV 5 TO ADDRESS OF a1 + 4 // при условии, что целочисленный размер равен 4