共用体とメモリ効率
structとunionの違いと、unionによってメモリ使用量を最適化する方法を理解します
「共用体とメモリ効率」はCoddyKit上の無料C Academyレッスンです。 これはレッスン2/3です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはC Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 C Academyコースには全3レッスンが含まれています。
共用体とメモリ効率
共用体は、異なるデータ型の値を同じメモリ領域に保存できる特殊なデータ型です。
このレッスンでは、次のことを学びます。
- 共用体の定義と使用方法
- 構造体と共用体の違い
- 共用体によるメモリ使用量の最適化方法

共用体とは
共用体は構造体に似ていますが、すべてのメンバーが同じメモリ領域を共有します。
例:
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言語の列挙型について学びます。

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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 構造体の定義と使い方
- 共用体とメモリ効率
- 列挙型(enum)