Структуры в C++. Часть 2





структуры с++, структуры c++, struct c++. вложенные структуры

Со структурами C++ мы предварительно познакомились в предыдущей статье. Продолжаем знакомство.

Определение структуры желательно располагать за пределами main() функции. Тогда работать с ней смогут и другие определенные программистом функции, как показано в нашем примере из первой части. Такое объявление называют внешним.

Инициализация. Элементы структуры можно инициализировать сразу при объявлении объекта.

Объявляем объект volume1 в строке 13 и проводим его инициализацию. Похоже на инициализацию элементов массива — в фигурных скобках и через запятую. Эти данные запишутся в соответствующие элементы структуры по порядку. В каком порядке определены элементы в структуре — в таком и произойдет запись значений. Операцию равно можно не использовать (согласно C++11).

Рассмотрим такую инициализацию на примере с более сложной структурой WonderfulWoman :

структуры с++, структуры c++, struct c++. вложенные структуры

Объект этой структуры можно инициализировать так:

структуры с++, структуры c++, struct c++. вложенные структуры

Но если структура содержит больше двух-трех элементов -желательно так не делать. Это немного запутывает и усложняет читаемость и понимание программы.

Объявление объектов. Создать объект структуры можно сразу во время её определения. Для этого необходимо дать имя объекту между точкой с запятой и закрывающей фигурной скобкой:

В С++ есть возможность определить структуру без дескриптора (без имени типа):

В таком случае надо обязательно объявлять объекты в определении структуры. В главной функции вы уже не сможете создать другие объекты этой структуры, так как дескриптора нет. Этот прием есть смысл применять, если объектов структуры будет очень мало — 1 или 2.

Присваивание (=) для структур. Для объектов одной структуры можно применить операцию присваивания = . Операция присвоит элементам одного объекта значения элементов второго объекта.

Это так называемое поэлементное или почленное присваивание. На экране:

структуры с++, структуры c++, struct c++. вложенные структуры

Сработало — все элементы объекта структуры volume2 стали равны элементам объекта volume1.

Память занимаемая структурой. Рассмотрим пример: используя оператор sizeof, узнаем сколько памяти занимает каждый элемент структуры в отдельности. Посчитаем общий объем памяти элементов. Потом применим sizeof к объекту структуры и увидим, что размеры не совпадают.

На экране:

структуры с++, структуры c++, struct c++. вложенные структуры

sizeof показал нам сколько памяти занимает каждый элемент структуры HandsomeMan. Мы эти значения суммировали и получили 25. То есть по идее структура должна занимать 25 байт оперативной памяти. Но когда мы применяем оператор sizeof к структуре — получаем значение 28.

Размер объекта структуры не всегда равен сумме размеров его элементов. Так случается из-за выравнивания элементов разной длины. Поэтому в структуре могут встречаться безымянные участки памяти. Если вам надо знать сколько в действительности занимает структура в памяти — примените sizeof , как в примере.

Это видео из предыдущего урока. Кто не смотрел — уделите время




Мы узнали как определять структуры, как объявлять и инициализировать их объекты. Если нам понадобится создать больше чем 2-3 объекта структуры, тогда лучше создать массив структур. Эту тему рассмотрим в следующей статье.

Чтобы поддержать наш сайт — нажмите на копилку и выберите любой удобный способ.

Рассылка новых уроков:


Согласен получать уведомления от purecodecpp.com на мой e-mail

Дата
Страница
Структуры в C++. Часть 2
Рейтинг
5

Структуры в C++. Часть 2: 3 комментария

  1. странно, но с именем в структуре беда, а точнее когда вводишь
    volume = { «имя», и тд ;

Добавить комментарий

Код размещайте в тегах: <pre class="lang:c++ decode:true ">YOUR CODE</pre>