0Pricing
C Academy · Урок

Объединения и эффективное использование памяти

Поймите различия между struct и union и узнайте, как объединения оптимизируют использование памяти

«Объединения и эффективное использование памяти» — бесплатный урок C Academy на CoddyKit. Это урок 2 из 3. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 3 уроков всего.

Объединения и эффективное использование памяти

Объединения и эффективное использование памяти

Объединение — это специальный тип данных, позволяющий хранить данные разных типов в одной области памяти.

В этом уроке Вы узнаете:

  • Как определять и использовать объединения.
  • Чем структуры отличаются от объединений.
  • Как объединения оптимизируют использование памяти.
Объединения и эффективное использование памяти — иллюстрация 1

Что такое объединение

Что такое объединение?

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

Пример:

union Data { int i; float f; char str[20]; };

Здесь i, f и str используют одну и ту же область памяти.

Объявление и использование объединения

Объявление и использование объединения

Объединения объявляются и используются так же, как структуры:

union Data d1;

Присваивание значений:

d1.i = 10;

Одновременно хранить значение может только один член.

Пример: использование объединения

Пример: использование объединения

Эта программа демонстрирует, как объединение хранит значения в общей области памяти.

#include <stdio.h>

union Data {
    int i;
    float f;
    char str[20];
};

int main() {
    union Data d1;
    d1.i = 10;
    printf("Integer: %d\n", d1.i);
    d1.f = 20.5;
    printf("Float: %f\n", d1.f);
    return 0;
}

Распределение памяти в объединениях

Распределение памяти в объединениях

В отличие от структур, размер объединения определяется его самым большим членом.

Пример:

union Data { int i; // 4 bytes float f; // 4 bytes char str[20]; // 20 bytes };

Размер этого объединения составляет 20 байт, а не 28.

Различия между структурой и объединением

Различия между структурой и объединением

Структура:

  • У каждого члена есть отдельная область памяти.
  • Размер равен сумме размеров всех членов.

Объединение:

  • Все члены используют одну и ту же область памяти.
  • Размер определяется самым большим членом.

Пример: сравнение структуры и объединения

Пример: сравнение структуры и объединения

Эта программа показывает размер памяти структуры и объединения.

#include <stdio.h>

struct StructExample {
    int i;
    float f;
    char str[20];
};

union UnionExample {
    int i;
    float f;
    char str[20];
};

int main() {
    printf("Size of struct: %lu bytes\n", sizeof(struct StructExample));
    printf("Size of union: %lu bytes\n", sizeof(union UnionExample));
    return 0;
}

Когда использовать объединения

Когда использовать объединения?

Объединения полезны, когда:

  • Эффективное использование памяти имеет первостепенное значение.
  • Переменной нужно хранить значения разных типов в разное время.
  • Вы работаете с аппаратными регистрами.

Итоги

Итоги

В этом уроке Вы узнали:

  • Как работают объединения и как они экономят память.
  • Чем структуры отличаются от объединений.
  • Как использовать объединения на практике.

Далее мы рассмотрим перечисления в C!

Объединения и эффективное использование памяти — иллюстрация 10

Часто задаваемые вопросы

Урок «Объединения и эффективное использование памяти» бесплатный?

Да — полный текст урока «Объединения и эффективное использование памяти» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 3 уроков всего.

Чему я научусь в уроке «Объединения и эффективное использование памяти»?

Поймите различия между struct и union и узнайте, как объединения оптимизируют использование памяти Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C Academy?

Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 3.

Сколько времени занимает урок «Объединения и эффективное использование памяти»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C Academy?

Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Определение и использование структур
  2. Объединения и эффективное использование памяти
  3. Перечисления (enum)
← Назад к C Academy