C Academy · レッスン

共用体とメモリ効率

structとunionの違いと、unionによってメモリ使用量を最適化する方法を理解します

レッスン 2/310 ステップ

「共用体とメモリ効率」はCoddyKit上の無料C Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これは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;

一度に値を保存できるメンバーは1つだけです。

例:共用体の使用

このプログラムでは、共用体が共有メモリ領域に値を保存する方法を示します。

#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 };

この共用体のサイズは28バイトではなく、20バイトです。

構造体と共用体の違い

構造体:

  • 各メンバーが別々のメモリ領域を持ちます。
  • サイズはすべてのメンバーの合計です。

共用体:

  • すべてのメンバーが同じメモリ領域を共有します。
  • サイズは最大のメンバーによって決まります。

例:構造体と共用体の比較

このプログラムでは、構造体と共用体のメモリサイズを示します。

#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;
}

共用体を使う場面

共用体は、次のような場合に便利です。

  • メモリ効率が優先される場合
  • 1つの変数に、時によって異なる型の値を保存する必要がある場合
  • ハードウェアレジスターを扱う場合

まとめ

このレッスンでは、次のことを学びました。

  • 共用体の仕組みと、メモリを節約する方法
  • 構造体と共用体の違い
  • 実際の場面で共用体を使用する方法

次は、C言語の列挙型について学びます。

共用体とメモリ効率 — イラスト10
無料で開始

AI チューターと学ぶ C — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
39
レッスン
144

よくある質問

「共用体とメモリ効率」レッスンは無料ですか?

はい。「共用体とメモリ効率」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、C Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 C Academyコースには全3レッスンが含まれています。

「共用体とメモリ効率」で何を学びますか?

structとunionの違いと、unionによってメモリ使用量を最適化する方法を理解します ブラウザで直接実行するハンズオンコードでC Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

C Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのC Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/3です。

「共用体とメモリ効率」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このC Academyレッスンでコードを書いて実行できますか?

はい。すべてのC Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 構造体の定義と使い方
  2. 共用体とメモリ効率
  3. 列挙型(enum)
← C Academyに戻る