пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ


Массивы структур. Правила выравнивания структурных переменных в памяти

Структуры часто образуют массивы. Чтобы объявить массив структур, вначале необходимо определить структуру, а затем объявить переменную массива этого же типа. 

Например, если нужно хранить информацию о 10 студентах, то объявление массива будет следующим

struct student stud1[10];

Здесь stud1 - имя массива структур, а stud1[0] - это первая структура, stud1[1] - вторая... stud1[9] - десятая структура. Чтобы получить доступ к полю age пятой структуры нужно написать 

stud1[4].age

Чтобы получить доступ к полю kurs первой структуры нужно написать

stud1[0].kurs


В памяти каждый элемент имеет свое место, и размещаются они последовательно

Компилятор выделяет под структурную переменную число байтов памяти, достаточное для хранения всех ее полей. Однако выделенное количество байт не всегда равно сумме длин отдельных полей из-за влияния дополнительного фактора внутреннего представления структурных переменных, называемого выравнивание

Выравнивание (align) означает, что компилятор выбирает адреса переменных так, чтобы они были кратны некоторой величине. Эта величина определяется типом переменной и особенностями адресации данных этого типа на аппаратном уровне (чаще всего она равна 2). Часто выравнивание не обязательно, но при этом скорость обращения к объекту может снижаться. Если выравнивание производится, компилятор может быть вынужден добавить между полями структуры пустые байты, и тогда размер структуры (определяемый с помощью sizeof) будет превышать сумму размеров ее полей.

 


14.06.2016; 09:25
хиты: 435
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь