👷8. Составные типы данных. Назначение, занимаемая память, диапазон значений, допустимые операции

Составные типы данных - типы данных, которые состоят из простых, а именно: структура и объединение.

Структура

Это объединение элементов под одним названием. Занимает место равное сумме размеров всех входящих в нее элементов. Переменная структуры хранит в себе все значения для каждого из элементов.

Допустимые операции:

  • Операция членства <имя структуры>.<член структуры>

  • Операция косвенного членства <указатель на структуру> -> <член структуры>

  • Операция взятия адреса &

  • Операция sizeof

  • Операция присваивания =

Работа со структурами:

  • Объявление структуры (шаблона)

struct book {
    char title [41];
    char author [31];
    float value;
};
  • Определение переменной типа структуры

struct book library;
//или
struct book {
    char title [41];
    char author [31];
    float value;
} library; //объявление с именем переменной
  • Инициализация структуры

struct book library = {
    "The Pinokio",
    "Some Author",
    1.95
};
//или отдельно
struct book surprise = {.value = 10.99};
  • Объявление массива структур

struct book library[10];

Здесь library объявляется как массив, содержащий 10 элементов. Каждый элемент этого массива является структурой типа book. Таким образом, library[0] - одна структур типа book, library[1] - вторая структура типа book и т.д.

  • Указатель на структуру

struct book * shell; - объявление указателя на структуру

shell = &library; - определение указателя

library.title == (*shell).title == shell->title

struct book * shell; - объявление указателя на структуруshell = &library; - определение указателяlibrary.title == (*shell).title == shell->title

Выравнивание полей структур

Объединение

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

Допустимы те же операции, что и со структурами

Last updated